L-codes / Neo-reGeorg

Neo-reGeorg is a project that seeks to aggressively refactor reGeorg
GNU General Public License v3.0
2.84k stars 439 forks source link

应对容器对数据返回前后追加内容的解决办法 #55

Closed ba0gu0 closed 2 years ago

ba0gu0 commented 2 years ago

遇到问题

解决思路

我阅读了neoreg.py源代码和对应的webshell源代码,尝试修改,通过在返回数据中加入标识,再使用正则匹配来解决这个问题。

  • 修改neoreg.py
    
    # 在session类的reader函数中,加入数据处理函数
    def mapping_body(self, data):
    re_pattern = self.session_mark() + r'(.*?)' + self.session_mark()  # 使用内置的mark关键值对响应数据进行处理
    re_metch_result = re.search(re_pattern, data)
    if re_metch_result:
    return re_metch_result.group(1)
    else:
    return ''

使用新加函数对requests返回数据的处理

if status == V["OK"]: data = self.mapping_body(response.content) # 添加mapping_body函数,正则处理返回数据 if len(data) == 0: sleep(READINTERVAL) continue else: data = self.decode_body(data)

* 修改`templates/tunnel.php`
```php
// 直接修改echo
if ($running) {
    header('X-STATUS: OK');
    header("Connection: Keep-Alive");
    echo $mark . strtr(base64_encode($readBuffer), $en, $de) . $mark;  // 直接拼接mark
} else {
    header('X-STATUS: FAIL');
}

还需要解决

L-codes commented 2 years ago

感谢反馈,首先加标记会造成流量规则,容易被流量设备检测 其实 Neo-reGeorg 对这样的情况已经有解决方案,可使用--cut-left--cut-right设置前后被追加内容的偏移位,从而获取到正确的base64数据 并且如果你没有使用-f参数伪造页面内容的话,会有自动计算出--cut-left--cut-right的偏移位提示

ba0gu0 commented 2 years ago

尴尬,我下载的release版本,3.6的,没有--cut-left参数。 我直接clone吧。

L-codes commented 2 years ago

喔 不好意思 因为主分支在弄 3.8 的预览,忘记发布 3.7版本了,我待会 release 一下 哈哈哈

L-codes commented 2 years ago

https://github.com/L-codes/Neo-reGeorg/releases/tag/v3.7.0

ba0gu0 commented 2 years ago

L-codes commented 2 years ago

你使用了-f指定伪造的内容文件吗?正常 --cut-left--cur-right是自动计算出来的,不会不友好 https://github.com/L-codes/Neo-reGeorg/blob/d1bcea93354f5475d2c5add3c0563dad25f9bfdc/neoreg.py#L543-L548

目前还没遇到页面内容为注释的html代码,这个时候有些中间件不对这些内容进行修改,导致偏移获取到的内容缺少

session_mark,不能作为标记配置,这样流量的传输会被标记

不过使用正则匹配的方式可以解决你遇到的问题,我考虑加入 v3.8.0 版本,感谢建议

L-codes commented 2 years ago

新增了 --extract 参数进行正则提取,代码参考: https://github.com/L-codes/Neo-reGeorg/commit/e2eca19451c26c621b3804864b81e76759c4f0c3

现在针对问题的需求

<html><p>原始base64数据Hr862cRcRES_9AFMojsEHA</p></html>

可用 --extract '<p>REGBODY</p>' 解决

ba0gu0 commented 2 years ago

感谢,确实没有进行界面伪装。 新增表达式贼强,问题已搞定。