百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程文章 > 正文

第12篇:给任意java程序挂Socks5代理方法

qiyuwang 2024-10-20 10:50 27 浏览 0 评论

Part1 前言

在内网横向过程中,经常会用frp、狗洞、nps等工具,在内网环境中搭建一个反向socks5代理,方便红队人员开展内网渗透工作。于是,红对人员需要对各种渗透工具挂上Socks5代理,使用proxifier这个工具挂全局s5代理是非常方便的,但是有的渗透工具是使用java写的,而且作者并没有编写Socks5代理功能,用proxifier挂java.exe进程的时候总会出现各种各样的问题,这种情况下可以用java自带的命令行功能解决。

本文章的各种命令都经过ABC_123的严格测试,同时仔细阅读了官方的Oracle的手册,也纠正一下网上各种文章的错误。

技术研究过程

  • 命令行挂Socks5代理

启动Socks5代理命令如下:

java -DsocksProxyHost=127.0.0.1 -DsocksProxyPort=1080 -jar webscan.jar

其中socksProxyHost是Socks5代理的IP地址,socksProxyPort是Socks5代理的端口号。socksProxyVersion版本号是5或者是4,默认是5版本,也就是Socks5代理,这里也可以指定。

如果socks5代理需要用户名及密码时,网上的文章介绍的方法是:

java -DsocksProxyHost=10.1.1.2 -DsocksProxyPort=8877 -Djava.net.socks.username=alibaba -Djava.net.socks.password=secret(此方法亲测无效,目前我也没找到命令行下设置S5代理用户名及密码的方法)

其中,java.net.socks.username是Socks5代理认证的用户名,java.net.socks.password是Socks5代理认证的密码。但是我java命令行接上述两个参数,怎么都弄不成功,总是提示Socks认证失败,如下图所示:

  • 命令行挂HTTP代理

如果想对一个Java程序设置HTTP代理,或者想用burpsuite对一个java程序进行抓包,那就按如下所示设置:

Java -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8080 -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=8080 -Dhttp.nonProxyHosts="*.example.com|localhost" -jar webscan.jar

这里重点纠正一下网上各种文章的错误:

如果想使用代理访问HTTP的URL,则必须使用http.proxyHost,http.proxyPort。如果想用代理访问HTTPS的URL,则必须使用https.proxyHost,https.proxyPort。如果想同时抓HTTP、HTTPS的url访问的话,以上4项是必须设置的,缺一不可!

具体命令解释如下:

http.proxyHost是HTTP代理的IP地址,http.proxyPort是HTTP代理的端口,https.proxyHost是HTTPS代理的IP地址,https.proxyPort是HTTPS代理的端口

http.nonProxyHosts(经过我测试,此选项对于http/https型URL均适用),用于指定哪些IP地址可以直连网络,不走HTTP/HTTPS代理,*是IP地址的通配符,按照|分割每个IP段,前后加上双引号包裹起来。

如果HTTP代理需要用户名密码的话,则按照如下设置(以下命令摘抄自网络,本地没有带用户名密码的http代理环境,所以没测试):

Java -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8080 -Dhttp.proxyUser=username -Dhttp.proxyPassword=password -Dhttp.nonProxyHosts="*.example.com|localhost|10.*.*.*" -jar webscan.jar

http.proxyUser是HTTP代理的用户名,http.proxyPassword是HTTP代理的密码,如果没有设置用户名密码认证,就不用设置这两项。

HTTPS代理设置如下:

java -Dhttps.proxyHost=host -Dhttps.proxyPort=port -Dhttps.proxyUser=user -Dhttps.proxyPassword="password" -Djavax.net.ssl.trustStore=c:/cacerts -Djavax.net.ssl.trustStorePassword=changeit -jar webscan.jar

  • 如果使用系统代理的话

java -Djava.net.useSystemProxies=true -jar webscan.jar

那么webscan.jar程序将会走IE浏览器设置的代理,也就是系统代理。然后打开IE浏览器,在“代理服务器”选项卡下设置一个代理IP即可:

  • Java代码编写中设置代理

我在编写各种Java工具时,一开始总是为写HTTP代理、Socks5代理头疼,因为太麻烦了。后续发现了一个简单有效的方法,可以在代码中直接添加System.setProperty设置,非常好用。

设置HTTP/HTTPS代理如下:

设置Socks5代理代码如下:



ProxyAuth类编写如下:


总结

1. 看官网手册挺重要的,更多的java命令行的网络设置方法,可以看Oracle官方的手册

https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html

https://docs.oracle.com/javase/10/docs/api/java/net/doc-files/net-properties.html

2. 这种方法对于一些特殊框架编写的Java应用无效,这只是极少数的情况,我在具体渗透过程中,还没有遇到。

专注于红队、蓝队技术分享

每周一篇,敬请关注

相关推荐

第二十六章 Bat文件(bat文件百科)

第二十六章Bat文件bat文件是dos下的批处理文件。批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为.bat或.cmd。在命令提示下输入批处理文件的名称,或者双击该批处理...

自媒体良器:音频文件批处理,FFmpeg一行搞定!果断收藏

引言FFMpeg是众多多媒体应用程序的核心,但该程序本身不具备一次转换多个文件的能力。但也拦不住,FFMpeg本身是命令行程序,可编写脚本,借助Bash轻松快速地构建自动化程序。...

批处理:创建和删除文件夹命令(批处理命令 删除文件夹)

上一期,我们学习了文件夹的查看命令:tree和dir,以及文件夹切换命令:cd,今天,我继续给大家讲解下批处理的目录(文件夹)操作命令:创建和删除。一.md:创建目录(文件夹)可以在当前文件夹下创建...

利用VBA创建新的工作簿(vba 创建工作簿)

【分享成果,随喜正能量】我告诫自己:你的话说得太多,你听别人倾诉得太多,你咖啡喝得太多,你在陌生的房间里坐的时间太长,你的睡眠质量太差,你醒着的时间太长,你平庸的事想得太多,你希望过多,你安慰自己太频...

实用小工具,注册表文件快速转换.bat文件

关于注册表注册表是Windows操作系统中的一个核心数据库,它用于存储系统和应用程序的设置信息。这个数据库文件控制着Windows操作系统的外观和如何响应外来事件的工作方式。注册表包含了各种参数,直接...

如何给自己的电脑做一个截图工具?现场教会你具体流程和步骤

做自媒体,经常要用到一些图片,有时候图片上有水印去不掉,这时候要是有一个能随意截图的工具该有多少呀!今天教授让大家自己设计一个截图工具。下面就是流程和步骤:1、在电脑页面的任意位置,点击鼠标右键,新建...

Windows使用批处理文件更改目录下的文件名(含序号)

从网上下载的图片,默认的名字是由许多字母和数字组成的比较长的一个字符串,不便于人记忆,使用起来比较麻烦。如下图所示:本文的目的是写一个批处理文件,将该目录中的所有扩展名为jpeg的文件改名为日期加序号...

学习VB编程第35天,如何调用bat批处理

今天学习了刘金玉老师零基础VB教程的第43期,学习的主要内容是如何调用bat批处理登录。一、什么是批处理1.什么是命令提示符(cmd)?在Windows开始菜单运行(windows+r键也可调出)中输...

利用bat让文件在指定时间自动进行备份

在很多时候,我们需要备份电脑中的一些文件,特别是企业服务器的备份,可能是有一些文件每天都会有更新,或者定期更新,而文件又是相对比较重要的,需要我们定时去备份。可有时候文件比较大,备份时间比较长,或者在...

BAT 批处理脚本教程(批处理脚本编写教程)

BAT批处理脚本教程第一章批处理基础第一节常用批处理内部命令简介批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD。这些命令统称批处...

Windows系统bat批处理常用命令(一)

一、批处理中常用的命令:@命令:加在每个命令行的最前面,表示运行时不显示这一行的命令行。eg:@echooff//不显示后续命令行及当前命令行...

编写bat文件在windows上自动执行cmd命令

windows电脑上直接新建txt记事本文件,编写好要执行的命令后,将后缀修改成.bat,然后直接点击文件就可以执行里面的命令了#打开命令窗口startcmd#/k执行完命令不关...

不会C语言写bat脚本代码批量修改文件名,DeepSeek帮你解决!

哈喽大家好,我是小飞。今天给大家讲一下DeepSeek做了一个批量修改文件夹的bat脚本。·首先先让它这样修改一下,因为之前已经做过一个,然后它没有改,现在让它修改一下,把它修改一个很智能的BAT脚本...

BAT批处理命令之ren/rename(与Excel合作批量修改文件名)

写在前面一鸽就是半年...

使用批处理文件——autoexec.bat(批处理more)

1、dblspace.sys磁盘压缩。  drvspace.sys、dblspace和drvspace是Microsoft公司推出的磁盘压缩工具,可以将磁盘的空间增加许多,但由于它依靠对文件进行压...

取消回复欢迎 发表评论: