A14.WEB主机-获取Webshell

[复制链接]
发表于 3 天前 | 显示全部楼层 |阅读模式
1.WEB主机-获取Webshell

利用模板编辑毛病获取Webshell

根据网络上的资料,一些版本的ASPCMS中还存在着利用模板编辑功能上传Webshell的毛病。下面找到与模板编辑干系的ASP文件,举行分析验证。
代码审计

打开admin_aspcms\style\AspCms_TemplateAdd.asp文件,看到了允许的文件扩展名变量:Template_AllowFileExt,但文件里未对此变量界说。
查找文件开头包罗的文件,得知此文件引用了Aspcms_Stylefun.Asp文件。找到并查察Aspcms_Stylefun.Asp文件,在第3行界说了允许的文件后缀名。
根据此文件第16行的代码,得知增长模板文件对应的函数是Addfile(),在文件中查找Addfile(),找到这个函数的具体代码。在第94-100行判定了假如是允许的后缀名则Flag设为True,假如Flag不为True,则报错。以是添加模板这里并不能用来上传Webshell。
然而当我们找到编辑模板对应的函数Editfile()时,却发现这里没有举行任何过滤。
于是判定可以利用编辑模板功能,修改已有的Asp文件,参加Webshell代码。
留意:新增、修改ASP文件须要具有干系文件的写入、修改权限。为了做方便做这个实行,可以将整个Web的目次,给Users组加上修改的权限。
毛病测试

访问网站配景,选择“全功能版”,进入后选择“界面风格”—“编辑模板”。下一步须要找到编辑模板时对应的URL,然后将URL里的HTML文件修改为某个已有的ASP文件。
选择一个HTML文件,在“编辑”上,右键“在新标签页打开”,即可看到对应的URL。大概F12--在“网络”标签中查察流量,得到对应的URL为:
http://192.168.10.130/admin_aspcms/_style/aspcms_templateedit.asp?acttype=&filename=about.html
从默认的URL里看到About.html可以直接引用,而编辑模板首页时,可以看到当前about.html是在templates\cn\html\目次下的,因此引用别的文件时,要以此作为相对路径。
然后将URL反面的文件名,改为网站里默认就有的Asp文件。不发起直接编辑首页,如许假如堕落立刻就会影响到用户的正常欣赏网页。在欣赏器里查察首页源代码,搜索“.asp”,发现在有一个search.Asp文件,和首页一样,位于网站根目次下。相对templates\cn\html\目次,要返回上级目次三次,才华到达网站根目次,然后加上文件名Search.Asp,就得到了编辑文件的URL:http://192.168.10.130/admin_aspcms/_style/aspcms_templateedit.asp?acttype=&filename=../../../search.asp
在文件尾部插入一句话,,点击修改。
然后就可以利用Webshell管理工具,中国菜刀举行毗连。中国菜刀当年是个很闻名的工具,因此被一些不怀盛情的人植入了后门,又放到网上让人们下载。因此在网上下载中国菜刀时,很大概会遇到有后门的。
现在在GitHub项目有一个非官方的下载所在: https://github.com/raddyfiy/caidao-official-version ,是比力可靠的,提供了3个版本的下载。差别版本的兼容性有差异,偶然换个版本就可以连上。在实行环境利用中国菜刀的告急缘故原由是它小巧,启动非常快,不像反面先容的别的Webshell工具,体积大,启动速率也慢。
本次利用的是中国菜刀20160622版。毗连所在是 http://192.168.10.130/search.asp?keys=b&searchtype=0 。
再次提示:search.asp文件须要有能被IIS来宾用户(或Users用户组)修改的NTFS文件体系权限。
题目1:为什么利用Webshell管理工具直接毗连http://192.168.10.130/search.asp会失败?
测试一下,直接访问http://192.168.10.130/search.asp也会报错,并自动返回。由于search.asp是用于站在内搜索的一个网页,假如不提供搜索关键字的话,就会弹出提示并返回。因此必须提供搜索的关键字和范例。在网站上输入一个字母,搜索一下,得到URL以后,毗连Webshell的时间用这个URL就可以正常运行了。也可以用别的不须要提供参数的ASP文件植入Webshell代码。
数据库中植入Webshell

此时,须要回到已经得到了管理员暗码,但还没有拿到Shell的场景。ASPCMS利用的是Access数据库,根据搜索到的资料,ASPCMS的部门版本中存在数据库插马毛病。这里我们由于可以或许登录配景,利用来测试一下。
利用数据库备份拿WebShell

登录ASPCMS的配景(完全版),打开内容维护,新加一个文章,文章标题或内容中插入下面的“乱码”一句话,暗码为a。
  1. ┼攠數畣整爠煥敵瑳∨≡┩愾
复制代码
这时,包罗一句话木马的代码已经写入了数据库当中。然后,在配景的“扩展功能”—“数据库备份规复”中,备份数据库,此版本中备份的后缀名是Asp,可以利用。
鼠标移动到文件名上,就可以看到文件对应的URL所在: http://192.168.10.130/data/backup/2022812135733_bak.asp ,然后在菜刀里毗连Webshell,暗码是a。
  1. 注意:在Access数据库插入“乱码”一句话木马时,需要确认一下数据库里之前没有插入过这种木马,如果多次插入,会导致这个webshell无法正常运行。因为网上流传的这种木马大部分都是同一个版本,密码都是a,因此如果之前已经插入过这种木马,可以直接连接一下,进行测试。
复制代码
我们乐成的验证了这个毛病,不外另有一些题目须要弄明确。
题目1:上述“乱码”一句话的字符无法输入,纸质的书也无法复制,怎么办?
有了前面这么多信息,从中提炼出关键词,网上搜索一下,找到干系资料后直接复制网页上的“乱码”一句话。
题目2:那么网站数据库的后缀名为什么要设置为Asp,带来安全题目呢?
原来早期Access数据库的后缀名是mdb,假如后缀名是mdb的话,IIS不做剖析处置处罚,访问mdb文件时会被直接下载到客户端。因此,有些开发职员为了克制数据库被人下载,将后缀名改为了Asp,如许访问数据库对应的URL时会被IIS看成Asp文件剖析处置处罚,但假如仅仅如许做的话利用下载工具仍可以下载,还须要共同别的步调。
题目3:为什么上面看起来像乱码一样的字符,可以作为一句话木马利用呢?
颠末多次调解关键词搜索,并分析验证,得到了答案。
起首,根据微软官方文档
Microsoft Access 2000或更高版本利用Unicode字符编码来体现文本、备注和超链接字段中的数据。Unicode将每个字符体现为两个字节,以是文本、备注或超链接字段中的数据须要的存储空间比在Access 97或更早版本中要多,在Access 97或更早版本中每个字符体现为一个字节。
可通过将“文本”、“备注”或“超链接”字段的“Unicode 压缩”属性的默认值设为“是”来增补Unicode字符表达方式所造成的影响,以确保得到优化的性能。当字段的“Unicode 压缩”属性设为“是”时,任何第一个字节为0的字符在存储时都会被压缩,而且在检索时解压缩。由于拉丁字符(如英语、西班牙语或德语)的字符的第一个字节为0,以是Unicode字符体现情势不会影响完全由拉丁字符构成的压缩数据所需的存储空间。
其次,联合网络上别的作者的研究资料,得知原理就是在Access文本字段直接插入颠末Access Unicode压缩后的字符,在字段Unicode压缩选项开启的环境下(默认开启),储存于Access 中的字符会自动转换为对应的Ascii字符。
这是理论上的表明。下面通过实行来验证一下。
打开记事本,输入正常的ASP一句话木马,以Unicode(UTF-16 LE)编码生存。
  1. [/code]然后利用Winhex打开,前2个字节FF FE是文件头,体现是Unicode小端字节序次编码,这部门不属于一句话,直接删掉。
  2. [align=center][img]https://img2024.cnblogs.com/blog/1885411/202605/1885411-20260510175359548-557414276.png[/img][/align]利用Unicode对单个英文编码后会占用2个字节,但首字节为00(小端序倒过来看)。根据微软官方的Access资料,首字节为0的,在Unicode压缩时会被去掉。利用Winhex的“更换十六进制数值”功能,将这些“00”都更换为空。可以看到,更换后确实不影响英笔墨符以ANSI ASCII的方式正常体现。
  3. [align=center][img]https://img2024.cnblogs.com/blog/1885411/202605/1885411-20260510175359786-1416266065.png[/img][/align]接下来,将Winhex的代码页,切换为Unicode(UTF-16 LE),在代码页这一栏果然看到和之前根本一样的乱码一句话。
  4. [align=center][img]https://img2024.cnblogs.com/blog/1885411/202605/1885411-20260510175400030-1561417563.png[/img][/align]把乱码一句话(现在知道实在是经Unicode压缩后的一句话)粘贴到记事本里,以Unicode(UTF-16 LE)编码生存成另一个文件,以便和刚才的文件举行对比。
  5. [code]┼攠數畣整爠煥敵瑳∨≡┩愾
复制代码
利用Winhex打开后,去掉开头2个字节的文件头,除了末了多了一个十六进制的61以外,别的部门完全一样。
在学习时,不要仅仅满意于操纵,除了通过动手操纵完成实行以外,更须要思考、分析此中涉及到的一些知识和原理。不外,对原理的明确和探索仍然须要把握一个“度”,否则就会“矫枉过正”。比方,在某个知识上延误了太多时间,影响了别的知识的学习;大概恒久研究某个原理没有结果,而影响了学习的信心,雷同这些都是不可取的。
利用留言板拿Webshell

利用这种方法有个条件,就是须要知道网站数据库的路径。一种大概是网站利用默认的数据库路径,没有改;大概通过目次扫描,得到了数据库路径。
思考一下别的一种环境:假如数据库路径改了,也没有扫描到,能登录配景,这种场景下,怎样获取数据库路径?参考答案在本节反面提供。
访问“在线留言”,在标题中插入下面的“乱码”一句话,暗码为a。
  1. ┼攠數畣整爠煥敵瑳∨≡┩愾
复制代码
网站默认的数据库文件路径是http://192.168.10.130/data/#data.asp,但用WebShell管理工具直接毗连URL会失败,在欣赏器里访问也会报错。
题目1:为什么访问带“#”号的URL:http://192.168.10.130/data/#data.asp会堕落?
在URL中,“#”号代表网页中的一个位置。其右面的字符,就是该位置的标识符。好比,http://www.example.com/index.html#print欣赏器读取这个URL后,会自动将print位置滚动至可视地区。#是用来引导欣赏器动作的,对服务器端完全无用。以是,发出的HTTP哀求中不包罗#。在URL第一个#反面出现的字符,都会被欣赏器解读为位置标识符。这意味着,这些字符都不会被发送到服务器端。
此上表明引用于: https://www.ruanyifeng.com/blog/2011/03/url_hash.html 。
利用欣赏器“查抄”功能,在“网络”面板查察具体的哀求数据时,可以验证这一点。
只有将#颠末URL编码,编码后是%23(23是#对应的ASCII码的16进制),欣赏器才会将其作为实义字符处置处罚。编码后,WebShell即可正常访问:http://192.168.10.130/data/%23data.asp。
实在,RFC 1738对URL编码做了规定:只有字母和数字[0-9a-zA-Z]、一些特殊符号"$-_.+!*'(),"[不包罗双引号]、以及某些生存字,才可以不颠末编码直接用于URL。原文如下:
Thus, only alphanumerics, the special characters "$-_.+!*'(),", and reserved characters used for their reserved purposes may be used unencoded within a URL.
On the other hand, characters that are not required to be encoded (including alphanumerics) may be encoded within the scheme-specific part of a URL, as long as they are not being used for a reserved purpose.
题目2:在能登录配景,但不知道数据库路径的场景下,怎样获取数据库路径?
利用模板编辑功能,读取网站设置文件,网站设置文件里有数据库路径,大概数据库的毗连信息,而网站设置文件的路径一样平常不会改。

免责声明:如果侵犯了您的权益,请联系站长及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表