Ecoer Logo
VOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS87.65%
Net Worth
18.504USD
STEEM
0.062STEEM
SBD
34.265SBD
Own SP
29.678SP

Detailed Balance

STEEM
balance
0.002STEEM
market_balance
0.000STEEM
savings_balance
0.000STEEM
reward_steem_balance
0.060STEEM
STEEM POWER
Own SP
29.678SP
Delegated Out
0.000SP
Delegation In
0.000SP
Effective Power
29.678SP
Reward SP (pending)
0.061SP
SBD
sbd_balance
34.265SBD
sbd_conversions
0.000SBD
sbd_market_balance
0.000SBD
savings_sbd_balance
0.000SBD
reward_sbd_balance
0.000SBD
{
  "balance": "0.002 STEEM",
  "savings_balance": "0.000 STEEM",
  "reward_steem_balance": "0.060 STEEM",
  "vesting_shares": "48326.770914 VESTS",
  "delegated_vesting_shares": "0.000000 VESTS",
  "received_vesting_shares": "0.000000 VESTS",
  "sbd_balance": "34.265 SBD",
  "savings_sbd_balance": "0.000 SBD",
  "reward_sbd_balance": "0.000 SBD",
  "conversions": []
}

Account Info

nameziqon
id209410
rank62,826
reputation208740274735
created2017-06-20T22:26:51
recovery_accountsteem
proxyNone
post_count109
comment_count0
lifetime_vote_count0
witnesses_voted_for0
last_post2018-09-20T09:45:51
last_root_post2018-09-20T09:45:51
last_vote_time2018-09-20T09:46:06
proxied_vsf_votes0, 0, 0, 0
can_vote1
voting_power9,800
delayed_votes0
balance0.002 STEEM
savings_balance0.000 STEEM
sbd_balance34.265 SBD
savings_sbd_balance0.000 SBD
vesting_shares48326.770914 VESTS
delegated_vesting_shares0.000000 VESTS
received_vesting_shares0.000000 VESTS
reward_vesting_balance123.435528 VESTS
vesting_balance0.000 STEEM
vesting_withdraw_rate0.000000 VESTS
next_vesting_withdrawal1969-12-31T23:59:59
withdrawn0
to_withdraw0
withdraw_routes0
savings_withdraw_requests0
last_account_recovery1970-01-01T00:00:00
reset_accountnull
last_owner_update1970-01-01T00:00:00
last_account_update2017-06-26T12:59:45
minedNo
sbd_seconds0
sbd_last_interest_payment2018-03-05T13:24:18
savings_sbd_last_interest_payment1970-01-01T00:00:00
{
  "id": 209410,
  "name": "ziqon",
  "owner": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM5NVrbGCpfKQyXzLLV28WAsUhvHtxDFvjuh3WdrPRNwcLfys6T6",
        1
      ]
    ]
  },
  "active": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM5DWAL49kpvDkuALfuLAP4momESMTuxmNXJDQ9WU4R9itEFVZAq",
        1
      ]
    ]
  },
  "posting": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM6UpABU1azHUDrcPMwweW6hvgraBWHJ2omDkwueYPsQkHcCBmaD",
        1
      ]
    ]
  },
  "memo_key": "STM7XwQfB4Q9HptaUazytRwxibTsJPYnxkQWBQGhLo1FK9WQGnGRw",
  "json_metadata": "{\"profile\":{\"cover_image\":\"\",\"profile_image\":\"https://img.esteem.ws/ox1h0u7unh.jpg\"}}",
  "posting_json_metadata": "{\"profile\":{\"cover_image\":\"\",\"profile_image\":\"https://img.esteem.ws/ox1h0u7unh.jpg\"}}",
  "proxy": "",
  "last_owner_update": "1970-01-01T00:00:00",
  "last_account_update": "2017-06-26T12:59:45",
  "created": "2017-06-20T22:26:51",
  "mined": false,
  "recovery_account": "steem",
  "last_account_recovery": "1970-01-01T00:00:00",
  "reset_account": "null",
  "comment_count": 0,
  "lifetime_vote_count": 0,
  "post_count": 109,
  "can_vote": true,
  "voting_manabar": {
    "current_mana": 9800,
    "last_update_time": 1537436766
  },
  "downvote_manabar": {
    "current_mana": 0,
    "last_update_time": 1497997611
  },
  "voting_power": 9800,
  "balance": "0.002 STEEM",
  "savings_balance": "0.000 STEEM",
  "sbd_balance": "34.265 SBD",
  "sbd_seconds": "0",
  "sbd_seconds_last_update": "2018-03-05T13:24:18",
  "sbd_last_interest_payment": "2018-03-05T13:24:18",
  "savings_sbd_balance": "0.000 SBD",
  "savings_sbd_seconds": "0",
  "savings_sbd_seconds_last_update": "1970-01-01T00:00:00",
  "savings_sbd_last_interest_payment": "1970-01-01T00:00:00",
  "savings_withdraw_requests": 0,
  "reward_sbd_balance": "0.000 SBD",
  "reward_steem_balance": "0.060 STEEM",
  "reward_vesting_balance": "123.435528 VESTS",
  "reward_vesting_steem": "0.061 STEEM",
  "vesting_shares": "48326.770914 VESTS",
  "delegated_vesting_shares": "0.000000 VESTS",
  "received_vesting_shares": "0.000000 VESTS",
  "vesting_withdraw_rate": "0.000000 VESTS",
  "next_vesting_withdrawal": "1969-12-31T23:59:59",
  "withdrawn": 0,
  "to_withdraw": 0,
  "withdraw_routes": 0,
  "curation_rewards": 12,
  "posting_rewards": 45859,
  "proxied_vsf_votes": [
    0,
    0,
    0,
    0
  ],
  "witnesses_voted_for": 0,
  "last_post": "2018-09-20T09:45:51",
  "last_root_post": "2018-09-20T09:45:51",
  "last_vote_time": "2018-09-20T09:46:06",
  "post_bandwidth": 0,
  "pending_claimed_accounts": 0,
  "vesting_balance": "0.000 STEEM",
  "reputation": "208740274735",
  "transfer_history": [],
  "market_history": [],
  "post_history": [],
  "vote_history": [],
  "other_history": [],
  "witness_votes": [],
  "tags_usage": [],
  "guest_bloggers": [],
  "rank": 62826
}

Withdraw Routes

IncomingOutgoing
Empty
Empty
{
  "incoming": [],
  "outgoing": []
}
From Date
To Date
2019/06/20 22:46:21
parent authorziqon
parent permlinkjob-ssul-series-1-ep11
authorsteemitboard
permlinksteemitboard-notify-ziqon-20190620t224620000z
title
bodyCongratulations @ziqon! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@ziqon/birthday2.png</td><td>Happy Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@ziqon) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=ziqon)_</sub> **Do not miss the last post from @steemitboard:** <table><tr><td><a href="https://steemit.com/steemitboard/@steemitboard/the-steem-community-has-lost-an-epic-member-farewell-woflhart"><img src="https://steemitimages.com/64x128/https://cdn.steemitimages.com/DQmQWnM36SWCPGn98nY83M1ArgweMz5fnovQEp2E4FiDdug/Wolfhart_header.png"></a></td><td><a href="https://steemit.com/steemitboard/@steemitboard/the-steem-community-has-lost-an-epic-member-farewell-woflhart">The Steem community has lost an epic member! Farewell @woflhart!</a></td></tr><tr><td><a href="https://steemit.com/steemtoolbar/@steemitboard/steemtoolbar-update-display-bug-fixed"><img src="https://steemitimages.com/64x128/http://i.cubeupload.com/7CiQEO.png"></a></td><td><a href="https://steemit.com/steemtoolbar/@steemitboard/steemtoolbar-update-display-bug-fixed">SteemitBoard - Witness Update</a></td></tr><tr><td><a href="https://steemit.com/steem/@steemitboard/do-not-miss-the-coming-rocky-mountain-steem-meetup-and-get-a-new-community-badge"><img src="https://steemitimages.com/64x128/https://cdn.steemitimages.com/DQmUphCGZFWgt6bJ1XTtunV7esnwy6bxnGqcLcHAV3NEqnQ/meetup-rocky-mountain.png"></a></td><td><a href="https://steemit.com/steem/@steemitboard/do-not-miss-the-coming-rocky-mountain-steem-meetup-and-get-a-new-community-badge">Do not miss the coming Rocky Mountain Steem Meetup and get a new community badge!</a></td></tr></table> ###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
Transaction InfoBlock #33976788/Trx f15726e9dfd5a3475a4634bf8c5f9312b4167954
View Raw JSON Data
{
  "trx_id": "f15726e9dfd5a3475a4634bf8c5f9312b4167954",
  "block": 33976788,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2019-06-20T22:46:21",
  "op": [
    "comment",
    {
      "parent_author": "ziqon",
      "parent_permlink": "job-ssul-series-1-ep11",
      "author": "steemitboard",
      "permlink": "steemitboard-notify-ziqon-20190620t224620000z",
      "title": "",
      "body": "Congratulations @ziqon! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@ziqon/birthday2.png</td><td>Happy Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@ziqon) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=ziqon)_</sub>\n\n\n**Do not miss the last post from @steemitboard:**\n<table><tr><td><a href=\"https://steemit.com/steemitboard/@steemitboard/the-steem-community-has-lost-an-epic-member-farewell-woflhart\"><img src=\"https://steemitimages.com/64x128/https://cdn.steemitimages.com/DQmQWnM36SWCPGn98nY83M1ArgweMz5fnovQEp2E4FiDdug/Wolfhart_header.png\"></a></td><td><a href=\"https://steemit.com/steemitboard/@steemitboard/the-steem-community-has-lost-an-epic-member-farewell-woflhart\">The Steem community has lost an epic member! Farewell @woflhart!</a></td></tr><tr><td><a href=\"https://steemit.com/steemtoolbar/@steemitboard/steemtoolbar-update-display-bug-fixed\"><img src=\"https://steemitimages.com/64x128/http://i.cubeupload.com/7CiQEO.png\"></a></td><td><a href=\"https://steemit.com/steemtoolbar/@steemitboard/steemtoolbar-update-display-bug-fixed\">SteemitBoard - Witness Update</a></td></tr><tr><td><a href=\"https://steemit.com/steem/@steemitboard/do-not-miss-the-coming-rocky-mountain-steem-meetup-and-get-a-new-community-badge\"><img src=\"https://steemitimages.com/64x128/https://cdn.steemitimages.com/DQmUphCGZFWgt6bJ1XTtunV7esnwy6bxnGqcLcHAV3NEqnQ/meetup-rocky-mountain.png\"></a></td><td><a href=\"https://steemit.com/steem/@steemitboard/do-not-miss-the-coming-rocky-mountain-steem-meetup-and-get-a-new-community-badge\">Do not miss the coming Rocky Mountain Steem Meetup and get a new community badge!</a></td></tr></table>\n\n###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}"
    }
  ]
}
ziqonfollowed @lhamed
2018/12/06 07:50:36
required auths[]
required posting auths["ziqon"]
idfollow
json["follow",{"follower":"ziqon","following":"lhamed","what":["blog"]}]
Transaction InfoBlock #28320249/Trx 2dac216deefff64ffd506f46b5d75620847b30af
View Raw JSON Data
{
  "trx_id": "2dac216deefff64ffd506f46b5d75620847b30af",
  "block": 28320249,
  "trx_in_block": 22,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-12-06T07:50:36",
  "op": [
    "custom_json",
    {
      "required_auths": [],
      "required_posting_auths": [
        "ziqon"
      ],
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"ziqon\",\"following\":\"lhamed\",\"what\":[\"blog\"]}]"
    }
  ]
}
ziqonreceived 0.021 STEEM, 0.026 SP author reward for @ziqon / job-ssul-series-1-ep9
2018/09/20 10:55:18
authorziqon
permlinkjob-ssul-series-1-ep9
sbd payout0.000 SBD
steem payout0.021 STEEM
vesting payout42.447981 VESTS
Transaction InfoBlock #26108004/Virtual Operation #5
View Raw JSON Data
{
  "trx_id": "0000000000000000000000000000000000000000",
  "block": 26108004,
  "trx_in_block": 4294967295,
  "op_in_trx": 0,
  "virtual_op": 5,
  "timestamp": "2018-09-20T10:55:18",
  "op": [
    "author_reward",
    {
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep9",
      "sbd_payout": "0.000 SBD",
      "steem_payout": "0.021 STEEM",
      "vesting_payout": "42.447981 VESTS"
    }
  ]
}
2018/09/20 09:46:45
voterkeithshermandd
authorziqon
permlinkjob-ssul-series-1-ep11
weight10000 (100.00%)
Transaction InfoBlock #26106635/Trx bd2ec2213f6b018fdde0811873a74a5ea4f7f32c
View Raw JSON Data
{
  "trx_id": "bd2ec2213f6b018fdde0811873a74a5ea4f7f32c",
  "block": 26106635,
  "trx_in_block": 34,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-20T09:46:45",
  "op": [
    "vote",
    {
      "voter": "keithshermandd",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep11",
      "weight": 10000
    }
  ]
}
2018/09/20 09:46:06
voterziqon
authorziqon
permlinkjob-ssul-series-1-ep11
weight10000 (100.00%)
Transaction InfoBlock #26106622/Trx a2f08d6682671807fadb42a423a5b0986b9c2c9c
View Raw JSON Data
{
  "trx_id": "a2f08d6682671807fadb42a423a5b0986b9c2c9c",
  "block": 26106622,
  "trx_in_block": 51,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-20T09:46:06",
  "op": [
    "vote",
    {
      "voter": "ziqon",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep11",
      "weight": 10000
    }
  ]
}
ziqonpublished a new post: job-ssul-series-1-ep11
2018/09/20 09:45:51
parent author
parent permlinkkr-dev
authorziqon
permlinkjob-ssul-series-1-ep11
titleJob SSul Series 1 : 해킹 방어 실습 - EP11 파일업로드 공격
body안녕하세요. 해킹과 방어 시리즈를 연재하고 있는 Ziqon입니다. 가을비가 내리더니 몇주만에 추워지는 군요. 가을이 와서 마음이 싱숭생숭하지만 해킹과 방어를 한번 해봅시다! 오늘의 주제는 침해사고가 났다고 하면 100의 60은 이 공격을 시발점으로 시작됩니다. 바로 파일업로드 공격이지요. 단순히 파일 업로드가 된다고 해서 공격이 가능한 것은 아닙니다. 웹쉘이라는 악성 스크립트를 업로드하고 또한 웹 등 외부 인터페이스에서 해당 웹쉘을 호출하여 시스템을 장악하는 공격입니다. 그럼 실습을 해볼까요? [공격 시나리오] - 파일 업로드 실습용 servlet 소스를 import합니다. ![](https://cdn.steemitimages.com/DQmZTJHH75cHCPogQrqGJFnnT7RU9yDVpfFWvQpPt3zd9gt/image.png) - Next버튼 클릭 후 라이브러리를 체크하고 [finish]버튼을 클릭합니다. ![](https://cdn.steemitimages.com/DQmYzEYf2atiNN1uvWbH8hD5fN2Zdim6JaiAv9YkHvaUQJ1/image.png) - 이후 class를 하나 더 생성합니다. ![](https://cdn.steemitimages.com/DQmNvTVJ4eYRLeUCGVgZ3ycj18DzK83oSk1rN8LpiJax5sk/image.png) ![](https://cdn.steemitimages.com/DQmc4aMKxUfj5KJpEn4fR8AnfVW6dTZ8XGDQ4pDs4hBYMGN/image.png) - 여기에 아래 코드를 입력합니다. blah~ blah~ - 저장 후 서버를 구동하면 아래와 같이 어떤 파일도 업로드 가능한 사이트가 열립니다. ![](https://cdn.steemitimages.com/DQmavL5ddb9ysdSCqQvYstUkQQEmfBsnmu446ydnXjVra4J/image.png) - 여기에 웹쉘 파일을 아래와 같이 업로드 하면.. (웹쉘 파일은 오픈되면 악용될 여지가 있기 때문에 오픈하지는 않겠습니다.) ![](https://cdn.steemitimages.com/DQmSZh18gABbHvFvgit4gDm8Tyoz5PHqGdmVqPD1uV1J7od/image.png) - 성공했다는 메세지가 뜹니다. ![](https://cdn.steemitimages.com/DQmU4WtxukiFdR2fQUtwbuGF8ZvkAnnRATK86c692rsfTSx/image.png) [방어 실습] - 동일하게 findbugs로 업로드 취약점을 스캔합니다. ![](https://cdn.steemitimages.com/DQmTTQiBQ7HmLAL11Ab9iuDCkKjQZ9WK2Zc3yygwUHJ7PQf/image.png) - 아래와 같이 취약점으로 검출됩니다. ![](https://cdn.steemitimages.com/DQmY6rxPWZEstasDVEmYNQKhUEETBT5sHEfX8RcQ3a9EyPz/image.png) - 해당 코드에 들어가보면 업로드된 파일 이름을 추출하는 로직이 있습니다. ![](https://cdn.steemitimages.com/DQmckUvRYXNibPYeKQMDBBAQwtbCY5wXS8JocoJwDwKZ1Vm/image.png) - 여기에 확장자를 검사하는 로직을 추가하고 일반적으로는 whitelist방식으로 허용하는 확장자만 가능하도록 합니다.(아래는 ppt파일과 doc파일만 업로드 되도록 구현) ![](https://cdn.steemitimages.com/DQmNfTVKw7i3mgoGzkvJR66cKdnNToM2nbjZxqgxEadkjax/image.png) - 자 이제 저장하고 다시 웹쉘을 업로드 해보겠습니다. 바로 실패하는 화면이 나옵니다.
json metadata{"tags":["kr-dev","steemit","dev","security"],"image":["https://cdn.steemitimages.com/DQmZTJHH75cHCPogQrqGJFnnT7RU9yDVpfFWvQpPt3zd9gt/image.png","https://cdn.steemitimages.com/DQmYzEYf2atiNN1uvWbH8hD5fN2Zdim6JaiAv9YkHvaUQJ1/image.png","https://cdn.steemitimages.com/DQmNvTVJ4eYRLeUCGVgZ3ycj18DzK83oSk1rN8LpiJax5sk/image.png","https://cdn.steemitimages.com/DQmc4aMKxUfj5KJpEn4fR8AnfVW6dTZ8XGDQ4pDs4hBYMGN/image.png","https://cdn.steemitimages.com/DQmavL5ddb9ysdSCqQvYstUkQQEmfBsnmu446ydnXjVra4J/image.png","https://cdn.steemitimages.com/DQmSZh18gABbHvFvgit4gDm8Tyoz5PHqGdmVqPD1uV1J7od/image.png","https://cdn.steemitimages.com/DQmU4WtxukiFdR2fQUtwbuGF8ZvkAnnRATK86c692rsfTSx/image.png","https://cdn.steemitimages.com/DQmTTQiBQ7HmLAL11Ab9iuDCkKjQZ9WK2Zc3yygwUHJ7PQf/image.png","https://cdn.steemitimages.com/DQmY6rxPWZEstasDVEmYNQKhUEETBT5sHEfX8RcQ3a9EyPz/image.png","https://cdn.steemitimages.com/DQmckUvRYXNibPYeKQMDBBAQwtbCY5wXS8JocoJwDwKZ1Vm/image.png","https://cdn.steemitimages.com/DQmNfTVKw7i3mgoGzkvJR66cKdnNToM2nbjZxqgxEadkjax/image.png"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #26106617/Trx 99a003368cb6415d08c9531e4a7f0364c63451c4
View Raw JSON Data
{
  "trx_id": "99a003368cb6415d08c9531e4a7f0364c63451c4",
  "block": 26106617,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-20T09:45:51",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "kr-dev",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep11",
      "title": "Job SSul Series 1 : 해킹 방어 실습 - EP11 파일업로드 공격",
      "body": "안녕하세요.\n해킹과 방어 시리즈를 연재하고 있는 Ziqon입니다.\n가을비가 내리더니 몇주만에 추워지는 군요.\n가을이 와서 마음이 싱숭생숭하지만 해킹과 방어를 한번 해봅시다!\n오늘의 주제는 침해사고가 났다고 하면 100의 60은 이 공격을 시발점으로 시작됩니다.\n바로 파일업로드 공격이지요.\n단순히 파일 업로드가 된다고 해서 공격이 가능한 것은 아닙니다.\n웹쉘이라는 악성 스크립트를 업로드하고 또한 웹 등 외부 인터페이스에서 해당 웹쉘을 호출하여 시스템을 장악하는 공격입니다.\n그럼 실습을 해볼까요?\n\n[공격 시나리오]\n- 파일 업로드 실습용 servlet 소스를 import합니다.\n![](https://cdn.steemitimages.com/DQmZTJHH75cHCPogQrqGJFnnT7RU9yDVpfFWvQpPt3zd9gt/image.png)\n\n- Next버튼 클릭 후 라이브러리를 체크하고 [finish]버튼을 클릭합니다.\n![](https://cdn.steemitimages.com/DQmYzEYf2atiNN1uvWbH8hD5fN2Zdim6JaiAv9YkHvaUQJ1/image.png)\n\n- 이후 class를 하나 더 생성합니다.\n![](https://cdn.steemitimages.com/DQmNvTVJ4eYRLeUCGVgZ3ycj18DzK83oSk1rN8LpiJax5sk/image.png)\n\n![](https://cdn.steemitimages.com/DQmc4aMKxUfj5KJpEn4fR8AnfVW6dTZ8XGDQ4pDs4hBYMGN/image.png)\n\n- 여기에 아래 코드를 입력합니다.\n  blah~ blah~\n\n\n- 저장 후 서버를 구동하면 아래와 같이 어떤 파일도 업로드 가능한 사이트가 열립니다.\n![](https://cdn.steemitimages.com/DQmavL5ddb9ysdSCqQvYstUkQQEmfBsnmu446ydnXjVra4J/image.png)\n\n- 여기에 웹쉘 파일을 아래와 같이 업로드 하면..\n  (웹쉘 파일은 오픈되면 악용될 여지가 있기 때문에 오픈하지는 않겠습니다.)\n![](https://cdn.steemitimages.com/DQmSZh18gABbHvFvgit4gDm8Tyoz5PHqGdmVqPD1uV1J7od/image.png)\n\n- 성공했다는 메세지가 뜹니다.\n![](https://cdn.steemitimages.com/DQmU4WtxukiFdR2fQUtwbuGF8ZvkAnnRATK86c692rsfTSx/image.png)\n\n[방어 실습]\n- 동일하게 findbugs로 업로드 취약점을 스캔합니다.\n![](https://cdn.steemitimages.com/DQmTTQiBQ7HmLAL11Ab9iuDCkKjQZ9WK2Zc3yygwUHJ7PQf/image.png)\n\n- 아래와 같이 취약점으로 검출됩니다.\n![](https://cdn.steemitimages.com/DQmY6rxPWZEstasDVEmYNQKhUEETBT5sHEfX8RcQ3a9EyPz/image.png)\n\n- 해당 코드에 들어가보면 업로드된 파일 이름을 추출하는 로직이 있습니다.\n![](https://cdn.steemitimages.com/DQmckUvRYXNibPYeKQMDBBAQwtbCY5wXS8JocoJwDwKZ1Vm/image.png)\n\n- 여기에 확장자를 검사하는 로직을 추가하고 일반적으로는 whitelist방식으로 허용하는 확장자만 가능하도록 합니다.(아래는 ppt파일과 doc파일만 업로드 되도록 구현)\n![](https://cdn.steemitimages.com/DQmNfTVKw7i3mgoGzkvJR66cKdnNToM2nbjZxqgxEadkjax/image.png)\n\n- 자 이제 저장하고 다시 웹쉘을 업로드 해보겠습니다. 바로 실패하는 화면이 나옵니다.",
      "json_metadata": "{\"tags\":[\"kr-dev\",\"steemit\",\"dev\",\"security\"],\"image\":[\"https://cdn.steemitimages.com/DQmZTJHH75cHCPogQrqGJFnnT7RU9yDVpfFWvQpPt3zd9gt/image.png\",\"https://cdn.steemitimages.com/DQmYzEYf2atiNN1uvWbH8hD5fN2Zdim6JaiAv9YkHvaUQJ1/image.png\",\"https://cdn.steemitimages.com/DQmNvTVJ4eYRLeUCGVgZ3ycj18DzK83oSk1rN8LpiJax5sk/image.png\",\"https://cdn.steemitimages.com/DQmc4aMKxUfj5KJpEn4fR8AnfVW6dTZ8XGDQ4pDs4hBYMGN/image.png\",\"https://cdn.steemitimages.com/DQmavL5ddb9ysdSCqQvYstUkQQEmfBsnmu446ydnXjVra4J/image.png\",\"https://cdn.steemitimages.com/DQmSZh18gABbHvFvgit4gDm8Tyoz5PHqGdmVqPD1uV1J7od/image.png\",\"https://cdn.steemitimages.com/DQmU4WtxukiFdR2fQUtwbuGF8ZvkAnnRATK86c692rsfTSx/image.png\",\"https://cdn.steemitimages.com/DQmTTQiBQ7HmLAL11Ab9iuDCkKjQZ9WK2Zc3yygwUHJ7PQf/image.png\",\"https://cdn.steemitimages.com/DQmY6rxPWZEstasDVEmYNQKhUEETBT5sHEfX8RcQ3a9EyPz/image.png\",\"https://cdn.steemitimages.com/DQmckUvRYXNibPYeKQMDBBAQwtbCY5wXS8JocoJwDwKZ1Vm/image.png\",\"https://cdn.steemitimages.com/DQmNfTVKw7i3mgoGzkvJR66cKdnNToM2nbjZxqgxEadkjax/image.png\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
2018/09/18 08:58:39
voteridas4you
authorziqon
permlinkjob-ssul-series-1-ep9
weight5000 (50.00%)
Transaction InfoBlock #26048310/Trx 4c04974f79bd0d19143c1d9ef94e1e0b3f378a8c
View Raw JSON Data
{
  "trx_id": "4c04974f79bd0d19143c1d9ef94e1e0b3f378a8c",
  "block": 26048310,
  "trx_in_block": 4,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-18T08:58:39",
  "op": [
    "vote",
    {
      "voter": "idas4you",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep9",
      "weight": 5000
    }
  ]
}
2018/09/17 09:59:18
voterziqon
authoranpigon
permlinkanpigon-re-ziqon-re-anpigon-re-ziqon-job-ssul-series-1-ep9-20180917t092253532z
weight10000 (100.00%)
Transaction InfoBlock #26036076/Trx 1f2a3023469a50bfa5ac82de6f160304cd95e692
View Raw JSON Data
{
  "trx_id": "1f2a3023469a50bfa5ac82de6f160304cd95e692",
  "block": 26036076,
  "trx_in_block": 9,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-17T09:59:18",
  "op": [
    "vote",
    {
      "voter": "ziqon",
      "author": "anpigon",
      "permlink": "anpigon-re-ziqon-re-anpigon-re-ziqon-job-ssul-series-1-ep9-20180917t092253532z",
      "weight": 10000
    }
  ]
}
ziqonfollowed @anpigon
2018/09/17 09:58:51
required auths[]
required posting auths["ziqon"]
idfollow
json["follow",{"follower":"ziqon","following":"anpigon","what":["blog"]}]
Transaction InfoBlock #26036067/Trx 5320e8ff9061f42ebf1fab9a8d7f8c0e36d9eefb
View Raw JSON Data
{
  "trx_id": "5320e8ff9061f42ebf1fab9a8d7f8c0e36d9eefb",
  "block": 26036067,
  "trx_in_block": 5,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-17T09:58:51",
  "op": [
    "custom_json",
    {
      "required_auths": [],
      "required_posting_auths": [
        "ziqon"
      ],
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"ziqon\",\"following\":\"anpigon\",\"what\":[\"blog\"]}]"
    }
  ]
}
2018/09/17 09:57:36
voterziqon
authorziqon
permlinkjob-ssul-series-1-ep10-command-injection
weight10000 (100.00%)
Transaction InfoBlock #26036042/Trx 2df2dab813d0a8782d8370a599cec2ef44f034c0
View Raw JSON Data
{
  "trx_id": "2df2dab813d0a8782d8370a599cec2ef44f034c0",
  "block": 26036042,
  "trx_in_block": 23,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-17T09:57:36",
  "op": [
    "vote",
    {
      "voter": "ziqon",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep10-command-injection",
      "weight": 10000
    }
  ]
}
2018/09/17 09:53:48
parent author
parent permlinksteemit
authorziqon
permlinkjob-ssul-series-1-ep10-command-injection
titleJob SSul Series 1 : 해킹 방어 실습 - EP10 Command Injection 공격
body안녕하세요. 해킹과 방어 시리즈를 연재하고 있는 Ziqon입니다. 이번 편에서는 외부 인터페이스(웹)를 통해 시스템에 직접적으로 command를 전달할 수 있는 취약점을 이용하여 command injection 공격과 방어를 해보겠습니다. [공격] http://www.mypage.com:8080/WebGoat-5.4.1/attack에 접속하여 Webgoat의 [Injection Flaws]의 [Command Injection]에 접속하고, AccessControlMatrix.html 파일을 선택한 후 [View File]을 클릭하여 버프에서 패킷을 확인합니다. ![](https://cdn.steemitimages.com/DQmdrpCZQNVrz8ufJSyYAA4mPSL9EzBzyy5unfFFJcFTTaA/image.png) 패킷의 마지막에 HelpFile=AccessControlMatrix.help 을 HelpFile=AccessControlMatrix.help%22+%26+netstat+-rn&SUBMIT=View 로 치환하여 인젝션을 하면 아래와 같이 netstat -rn 명령어를 입력한 결과가 화면에 뿌려지게 됩니다. ![](https://cdn.steemitimages.com/DQmXxa1emwGCPetHTw5iSpTtM3iztj5fs9wojb5rRaHAuRE/image.png) 여기서 "& netstat -rn을 인코딩한 값이며 윈도우에서는 명령어 연결자로 &를 사용합니다. [방어] - 커맨드 인젝션의 원인은 바로 외부 입력값을 그대로 시스템 함수의 파라미터로 넣기 때문입니다. 보통 시스템 명령어는 외부에서 직접적으로 입력 받아서 실행해서는 안되며 필요한 시스템 함수를 정의하여 약속된 파라미터가 드러올 경우 해당 시스템명령어를 실행할 수 있도록 구현해야 합니다. -FindBugs에서 탐지된 아래 취약점 결과를 선택합니다. ![](https://cdn.steemitimages.com/DQmXDEqtGKPVtzxjPboX7UdB7KUYKkM7uC3mK8eB23sfbqv/image.png) -역시나 커맨드를 파라미터로 받아 시스템에 직접 실행시킬 수 있는 exec 메소드를 사용하고 있네요. ![](https://cdn.steemitimages.com/DQmPWEVHTJuKyh18Jr72zzPVnHcWtwshx9Q5aiLYZXEMdLH/image.png) -앞서 시큐어코딩을 진행했던 것과 동일하게 SecurityFilter에 필터를 추가합니다. String으로 입력값을 받는 경우와 배열형태로 입력값을 받는 경우 두가지를 고려해 아래와 같이 필터를 코딩합니다. ![](https://cdn.steemitimages.com/DQmTS7P5yNmBDy1AUFk4sHbFzN6U4HV76x9EAm1hvX73SqK/image.png) 인젝션에 사용되는 &, ;, | 문자를 치환하는 필터입니다. -만든 필터를 적용해봐야겠죠? command를 입력받아 실행하는 두군데 모두 입력값 실행 전에 필터를 적용합니다. ![](https://cdn.steemitimages.com/DQmTPJpVJruzC866G7ygB9mBs8Xdt8Co8jzhEWa1DRb5rL6/image.png) ![](https://cdn.steemitimages.com/DQmNXXSCrrEuJ6PfWiaKKUCHtxtbjJh6MMrJV921LQXb5f1/image.png) -아래와 같이 인젝션에 실패하는 것을 확인할 수 있습니다. ![](https://cdn.steemitimages.com/DQmSntnCmT886sqomubm1sZD7WayE1e7X4P8ZJmgGeHoEvc/image.png) -이번 포스팅에서는 확률적으로는 많이 발생하지는 않지만 발생할 경우 시스템에 치명타를 줄 수 있는 command injection에 대해 알아보았습니다. 보통 웹시스템에서는 많이 발생하지 않지만 그래도 주의주의해서 코딩해야 합니다. -다음편에서는 가장 치명적이고 잘 발생하는 upload취약점을 이용한 공격과 방어를 실습해보도록 하겠습니다.
json metadata{"tags":["steemit","security","education","kr"],"image":["https://cdn.steemitimages.com/DQmdrpCZQNVrz8ufJSyYAA4mPSL9EzBzyy5unfFFJcFTTaA/image.png","https://cdn.steemitimages.com/DQmXxa1emwGCPetHTw5iSpTtM3iztj5fs9wojb5rRaHAuRE/image.png","https://cdn.steemitimages.com/DQmXDEqtGKPVtzxjPboX7UdB7KUYKkM7uC3mK8eB23sfbqv/image.png","https://cdn.steemitimages.com/DQmPWEVHTJuKyh18Jr72zzPVnHcWtwshx9Q5aiLYZXEMdLH/image.png","https://cdn.steemitimages.com/DQmTS7P5yNmBDy1AUFk4sHbFzN6U4HV76x9EAm1hvX73SqK/image.png","https://cdn.steemitimages.com/DQmTPJpVJruzC866G7ygB9mBs8Xdt8Co8jzhEWa1DRb5rL6/image.png","https://cdn.steemitimages.com/DQmNXXSCrrEuJ6PfWiaKKUCHtxtbjJh6MMrJV921LQXb5f1/image.png","https://cdn.steemitimages.com/DQmSntnCmT886sqomubm1sZD7WayE1e7X4P8ZJmgGeHoEvc/image.png"],"links":["http://www.mypage.com:8080/WebGoat-5.4.1/attack에"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #26035966/Trx fe7647c2c00e5bf9d5224434c2d8a5a0e5f5108d
View Raw JSON Data
{
  "trx_id": "fe7647c2c00e5bf9d5224434c2d8a5a0e5f5108d",
  "block": 26035966,
  "trx_in_block": 15,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-17T09:53:48",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "steemit",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep10-command-injection",
      "title": "Job SSul Series 1 : 해킹 방어 실습 - EP10 Command Injection 공격",
      "body": "안녕하세요.\n해킹과 방어 시리즈를 연재하고 있는 Ziqon입니다.\n이번 편에서는 외부 인터페이스(웹)를 통해 시스템에 직접적으로 command를 전달할 수 있는 취약점을 이용하여\ncommand injection 공격과 방어를 해보겠습니다.\n\n[공격]\n\nhttp://www.mypage.com:8080/WebGoat-5.4.1/attack에 접속하여 Webgoat의 [Injection Flaws]의 [Command Injection]에 접속하고, AccessControlMatrix.html 파일을 선택한 후 [View File]을 클릭하여 버프에서 패킷을 확인합니다.\n![](https://cdn.steemitimages.com/DQmdrpCZQNVrz8ufJSyYAA4mPSL9EzBzyy5unfFFJcFTTaA/image.png)\n\n패킷의 마지막에 HelpFile=AccessControlMatrix.help 을 HelpFile=AccessControlMatrix.help%22+%26+netstat+-rn&SUBMIT=View 로 치환하여 인젝션을 하면 아래와 같이 netstat -rn 명령어를 입력한 결과가 화면에 뿌려지게 됩니다.\n![](https://cdn.steemitimages.com/DQmXxa1emwGCPetHTw5iSpTtM3iztj5fs9wojb5rRaHAuRE/image.png)\n\n여기서 \"&  netstat -rn을 인코딩한 값이며 윈도우에서는 명령어 연결자로 &를 사용합니다.\n\n[방어]\n- 커맨드 인젝션의 원인은 바로 외부 입력값을 그대로 시스템 함수의 파라미터로 넣기 때문입니다. 보통 시스템 명령어는 외부에서 직접적으로 입력 받아서 실행해서는 안되며 필요한 시스템 함수를 정의하여 약속된 파라미터가 드러올 경우 해당 시스템명령어를 실행할 수 있도록 구현해야 합니다.\n\n-FindBugs에서 탐지된 아래 취약점 결과를 선택합니다.\n![](https://cdn.steemitimages.com/DQmXDEqtGKPVtzxjPboX7UdB7KUYKkM7uC3mK8eB23sfbqv/image.png)\n\n-역시나 커맨드를 파라미터로 받아 시스템에 직접 실행시킬 수 있는 exec 메소드를 사용하고 있네요.\n![](https://cdn.steemitimages.com/DQmPWEVHTJuKyh18Jr72zzPVnHcWtwshx9Q5aiLYZXEMdLH/image.png)\n\n-앞서 시큐어코딩을 진행했던 것과 동일하게 SecurityFilter에 필터를 추가합니다.\n String으로 입력값을 받는 경우와 배열형태로 입력값을 받는 경우 두가지를 고려해 아래와 같이 필터를 코딩합니다.\n![](https://cdn.steemitimages.com/DQmTS7P5yNmBDy1AUFk4sHbFzN6U4HV76x9EAm1hvX73SqK/image.png)\n인젝션에 사용되는 &, ;, | 문자를 치환하는 필터입니다.\n\n-만든 필터를 적용해봐야겠죠? command를 입력받아 실행하는 두군데 모두 입력값 실행 전에 필터를 적용합니다.\n![](https://cdn.steemitimages.com/DQmTPJpVJruzC866G7ygB9mBs8Xdt8Co8jzhEWa1DRb5rL6/image.png) \n\n![](https://cdn.steemitimages.com/DQmNXXSCrrEuJ6PfWiaKKUCHtxtbjJh6MMrJV921LQXb5f1/image.png)\n\n-아래와 같이 인젝션에 실패하는 것을 확인할 수 있습니다.\n![](https://cdn.steemitimages.com/DQmSntnCmT886sqomubm1sZD7WayE1e7X4P8ZJmgGeHoEvc/image.png)\n\n-이번 포스팅에서는 확률적으로는 많이 발생하지는 않지만 발생할 경우 시스템에 치명타를 줄 수 있는 command injection에 대해 알아보았습니다. 보통 웹시스템에서는 많이 발생하지 않지만 그래도 주의주의해서 코딩해야 합니다. \n\n-다음편에서는 가장 치명적이고 잘 발생하는 upload취약점을 이용한 공격과 방어를 실습해보도록 하겠습니다.",
      "json_metadata": "{\"tags\":[\"steemit\",\"security\",\"education\",\"kr\"],\"image\":[\"https://cdn.steemitimages.com/DQmdrpCZQNVrz8ufJSyYAA4mPSL9EzBzyy5unfFFJcFTTaA/image.png\",\"https://cdn.steemitimages.com/DQmXxa1emwGCPetHTw5iSpTtM3iztj5fs9wojb5rRaHAuRE/image.png\",\"https://cdn.steemitimages.com/DQmXDEqtGKPVtzxjPboX7UdB7KUYKkM7uC3mK8eB23sfbqv/image.png\",\"https://cdn.steemitimages.com/DQmPWEVHTJuKyh18Jr72zzPVnHcWtwshx9Q5aiLYZXEMdLH/image.png\",\"https://cdn.steemitimages.com/DQmTS7P5yNmBDy1AUFk4sHbFzN6U4HV76x9EAm1hvX73SqK/image.png\",\"https://cdn.steemitimages.com/DQmTPJpVJruzC866G7ygB9mBs8Xdt8Co8jzhEWa1DRb5rL6/image.png\",\"https://cdn.steemitimages.com/DQmNXXSCrrEuJ6PfWiaKKUCHtxtbjJh6MMrJV921LQXb5f1/image.png\",\"https://cdn.steemitimages.com/DQmSntnCmT886sqomubm1sZD7WayE1e7X4P8ZJmgGeHoEvc/image.png\"],\"links\":[\"http://www.mypage.com:8080/WebGoat-5.4.1/attack에\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
2018/09/17 09:22:54
parent authorziqon
parent permlinkre-anpigon-re-ziqon-job-ssul-series-1-ep9-20180917t084121371z
authoranpigon
permlinkanpigon-re-ziqon-re-anpigon-re-ziqon-job-ssul-series-1-ep9-20180917t092253532z
title
body말만 들어도 무섭네요. DB정보 탈취라니... 조심해야겠어요. Posted using [Partiko Android](https://steemit.com/@partiko-android)
json metadata{"app":"partiko"}
Transaction InfoBlock #26035348/Trx 35cc1b037372defb2be974a75dd0d51efa532520
View Raw JSON Data
{
  "trx_id": "35cc1b037372defb2be974a75dd0d51efa532520",
  "block": 26035348,
  "trx_in_block": 27,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-17T09:22:54",
  "op": [
    "comment",
    {
      "parent_author": "ziqon",
      "parent_permlink": "re-anpigon-re-ziqon-job-ssul-series-1-ep9-20180917t084121371z",
      "author": "anpigon",
      "permlink": "anpigon-re-ziqon-re-anpigon-re-ziqon-job-ssul-series-1-ep9-20180917t092253532z",
      "title": "",
      "body": "말만 들어도 무섭네요. DB정보 탈취라니... 조심해야겠어요.\n\nPosted using [Partiko Android](https://steemit.com/@partiko-android)",
      "json_metadata": "{\"app\":\"partiko\"}"
    }
  ]
}
2018/09/17 08:41:27
parent authoranpigon
parent permlinkre-ziqon-job-ssul-series-1-ep9-20180913t112157080z
authorziqon
permlinkre-anpigon-re-ziqon-job-ssul-series-1-ep9-20180917t084121371z
title
body네 기초적이지만 많이 나오는 취약점입니다. 다운로드 취약점에서 시작되는 공격은 시스템 conf를 다운로드받아 DB접속정보들을 탈취하는 경우가 크리티컬하면서도 많이 발생합니다.
json metadata{"tags":["kr-dev"],"app":"steemit/0.1"}
Transaction InfoBlock #26034520/Trx cd23301d2f3ac961501771464612c6f1d023d331
View Raw JSON Data
{
  "trx_id": "cd23301d2f3ac961501771464612c6f1d023d331",
  "block": 26034520,
  "trx_in_block": 23,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-17T08:41:27",
  "op": [
    "comment",
    {
      "parent_author": "anpigon",
      "parent_permlink": "re-ziqon-job-ssul-series-1-ep9-20180913t112157080z",
      "author": "ziqon",
      "permlink": "re-anpigon-re-ziqon-job-ssul-series-1-ep9-20180917t084121371z",
      "title": "",
      "body": "네 기초적이지만 많이 나오는 취약점입니다.\n다운로드 취약점에서 시작되는 공격은 시스템 conf를 다운로드받아 DB접속정보들을 탈취하는 경우가 크리티컬하면서도 많이 발생합니다.",
      "json_metadata": "{\"tags\":[\"kr-dev\"],\"app\":\"steemit/0.1\"}"
    }
  ]
}
2018/09/14 13:09:36
voterziqon
authorziqon
permlinkjob-ssul-series-1-ep8-crlf-injection
weight10000 (100.00%)
Transaction InfoBlock #25953512/Trx dba920df63f667bc49547459be99413d9929672b
View Raw JSON Data
{
  "trx_id": "dba920df63f667bc49547459be99413d9929672b",
  "block": 25953512,
  "trx_in_block": 19,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-14T13:09:36",
  "op": [
    "vote",
    {
      "voter": "ziqon",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep8-crlf-injection",
      "weight": 10000
    }
  ]
}
2018/09/14 13:00:15
voterziqon
authorziqon
permlinkjob-ssul-series-1-ep9
weight10000 (100.00%)
Transaction InfoBlock #25953325/Trx b6445c56627bad0e2d2a631e4f2e5365d297255e
View Raw JSON Data
{
  "trx_id": "b6445c56627bad0e2d2a631e4f2e5365d297255e",
  "block": 25953325,
  "trx_in_block": 35,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-14T13:00:15",
  "op": [
    "vote",
    {
      "voter": "ziqon",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep9",
      "weight": 10000
    }
  ]
}
2018/09/13 13:03:15
parent authorziqon
parent permlinkjob-ssul-series-1-ep9
authorsteemitboard
permlinksteemitboard-notify-ziqon-20180913t130316000z
title
bodyCongratulations @ziqon! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) : [![](https://steemitimages.com/70x80/http://steemitboard.com/notifications/posts.png)](http://steemitboard.com/@ziqon) Award for the number of posts published <sub>_Click on the badge to view your Board of Honor._</sub> <sub>_If you no longer want to receive notifications, reply to this comment with the word_ `STOP`</sub> **Do not miss the last post from @steemitboard:** <table><tr><td><a href="https://steemit.com/steemitboard/@steemitboard/steemitboard-witness-update-2018-09-07"><img src="https://steemitimages.com/64x128/http://i.cubeupload.com/7CiQEO.png"></a></td><td><a href="https://steemit.com/steemitboard/@steemitboard/steemitboard-witness-update-2018-09-07">SteemitBoard - Witness Update</a></td></tr></table> > Support [SteemitBoard's project](https://steemit.com/@steemitboard)! **[Vote for its witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1)** and **get one more award**!
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
Transaction InfoBlock #25924596/Trx 81456d283d0d26d99bc7f5d211141ea2f0c4be8c
View Raw JSON Data
{
  "trx_id": "81456d283d0d26d99bc7f5d211141ea2f0c4be8c",
  "block": 25924596,
  "trx_in_block": 34,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-13T13:03:15",
  "op": [
    "comment",
    {
      "parent_author": "ziqon",
      "parent_permlink": "job-ssul-series-1-ep9",
      "author": "steemitboard",
      "permlink": "steemitboard-notify-ziqon-20180913t130316000z",
      "title": "",
      "body": "Congratulations @ziqon! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :\n\n[![](https://steemitimages.com/70x80/http://steemitboard.com/notifications/posts.png)](http://steemitboard.com/@ziqon) Award for the number of posts published\n\n<sub>_Click on the badge to view your Board of Honor._</sub>\n<sub>_If you no longer want to receive notifications, reply to this comment with the word_ `STOP`</sub>\n\n\n\n**Do not miss the last post from @steemitboard:**\n<table><tr><td><a href=\"https://steemit.com/steemitboard/@steemitboard/steemitboard-witness-update-2018-09-07\"><img src=\"https://steemitimages.com/64x128/http://i.cubeupload.com/7CiQEO.png\"></a></td><td><a href=\"https://steemit.com/steemitboard/@steemitboard/steemitboard-witness-update-2018-09-07\">SteemitBoard - Witness Update</a></td></tr></table>\n\n> Support [SteemitBoard's project](https://steemit.com/@steemitboard)! **[Vote for its witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1)** and **get one more award**!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}"
    }
  ]
}
2018/09/13 11:33:54
votermishana
authorziqon
permlinkjob-ssul-series-1-ep9
weight6000 (60.00%)
Transaction InfoBlock #25922810/Trx 2399c12bbf6cef0ccf148e1eac9e0035c53e5c30
View Raw JSON Data
{
  "trx_id": "2399c12bbf6cef0ccf148e1eac9e0035c53e5c30",
  "block": 25922810,
  "trx_in_block": 67,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-13T11:33:54",
  "op": [
    "vote",
    {
      "voter": "mishana",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep9",
      "weight": 6000
    }
  ]
}
2018/09/13 11:22:09
voteranpigon
authorziqon
permlinkjob-ssul-series-1-ep9
weight10000 (100.00%)
Transaction InfoBlock #25922575/Trx a57e2d1da7eaa7533cf06c804a99b3cb78d263da
View Raw JSON Data
{
  "trx_id": "a57e2d1da7eaa7533cf06c804a99b3cb78d263da",
  "block": 25922575,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-13T11:22:09",
  "op": [
    "vote",
    {
      "voter": "anpigon",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep9",
      "weight": 10000
    }
  ]
}
2018/09/13 11:22:00
parent authorziqon
parent permlinkjob-ssul-series-1-ep9
authoranpigon
permlinkre-ziqon-job-ssul-series-1-ep9-20180913t112157080z
title
body이번에는 파라미터에 디렉토리명을 넣어서 공격하는 다운로드 취약점을 방어했네요~😁
json metadata{"tags":["kr-dev"],"app":"steemit/0.1"}
Transaction InfoBlock #25922572/Trx fa6d297332b307e284a34c0952bd6c1fd7ec9f0e
View Raw JSON Data
{
  "trx_id": "fa6d297332b307e284a34c0952bd6c1fd7ec9f0e",
  "block": 25922572,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-13T11:22:00",
  "op": [
    "comment",
    {
      "parent_author": "ziqon",
      "parent_permlink": "job-ssul-series-1-ep9",
      "author": "anpigon",
      "permlink": "re-ziqon-job-ssul-series-1-ep9-20180913t112157080z",
      "title": "",
      "body": "이번에는 파라미터에 디렉토리명을 넣어서 공격하는 다운로드 취약점을 방어했네요~😁",
      "json_metadata": "{\"tags\":[\"kr-dev\"],\"app\":\"steemit/0.1\"}"
    }
  ]
}
2018/09/13 11:08:39
votergolgo-13
authorziqon
permlinkjob-ssul-series-1-ep9
weight800 (8.00%)
Transaction InfoBlock #25922305/Trx 29932453ee9648792994707343471f1556bd3dc8
View Raw JSON Data
{
  "trx_id": "29932453ee9648792994707343471f1556bd3dc8",
  "block": 25922305,
  "trx_in_block": 18,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-13T11:08:39",
  "op": [
    "vote",
    {
      "voter": "golgo-13",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep9",
      "weight": 800
    }
  ]
}
ziqonpublished a new post: job-ssul-series-1-ep9
2018/09/13 10:55:18
parent author
parent permlinkkr-dev
authorziqon
permlinkjob-ssul-series-1-ep9
titleJob SSul Series 1 : 해킹 방어 실습 - EP9 다운로드 취약점 공격
body안녕하세요. 해킹과 방어 시리즈를 연재하고 있는 Ziqon입니다. 벌써 9번째 이야기라니.. 많이 왔습니다. 날씨도 시원해지고~ 다 같이 열공열공! 이번에는 웹시스템의 다운로드 취약점을 공격하고 방어해보겠습니다. 다운로드 파라미터에 웹루트의 디렉토리 명령을 집어넣어 시스템 파일 등에 접근하는 기법입니다. 자 그럼~ 돌격 앞으로!!! - webgoat 실행 및 왼쪽 메뉴의 Bypass a Path Based AccessControl Schem 에 접속합니다. ![](https://cdn.steemitimages.com/DQmX1285d92LTqQJvfEd97kfXqqPcHj4oxHvPXDJ4Ap4v8a/image.png) - 브라우저에서 프록시 설정을 아래와 같이 5000번 포트를 지정해줍니다. ![](https://cdn.steemitimages.com/DQmV8Y4szvfq8deduoGFudDx2o1h4ehpiYxHG5H9W7Y93pP/image.png) - 프록시 툴 설정 https://portswigger.net/burp/communitydownload 에서 burp suite를 다운로드받습니다. [Proxy]에서 [Options] -> [Add]를 클릭하여 Bind to port는 5000 및 Specific address는 127.0.0.1을 선택하고 설정 값을 저장합니다. ![](https://cdn.steemitimages.com/DQmeoAqxUu16QMMDjAETfrdg7BnzMcDd8CgXUFDHUa7V9cE/image.png) -5000번 포트만 체크합니다. ![](https://cdn.steemitimages.com/DQmYKhv5eEa8QEtm8ue2YWw8M6WnexhSnq4Sgf7STEHokVY/image.png) -127.0.0.1은 웹브라우저와 프록시 툴간에 인식이 되지 않기 때문에 hosts 파일에 임시로 가상도메인을 추가합니다. ![](https://cdn.steemitimages.com/DQmQenjMHJUEPe6xcnk9fpqDqdNGgmFqkmgXYJkBoUht1GV/image.png) -이제 접속주소는 www.mypage.com:8080/WebGoat-5.4.1/attack이되며 Bypass a Path Based AccessControl Schem에서 맨 위의 html파일에 접근합니다. ![](https://cdn.steemitimages.com/DQmdsGD9kkfm3yrcpJoKzzt1d4QSqAKvh8uzxdRtdihUKka/image.png) -아래 burp에서 해당 파일을 ../../main.jsp로 변조하여 main.jsp에 접근해 봅니다. ![](https://cdn.steemitimages.com/DQmYQZG34yTx2Xyfr782cRChH3MwzpJjokpXs1Za1hYuBqk/image.png) ![](https://cdn.steemitimages.com/DQmZ2hguaW53hrkHmgJLVk64f4TTbGvpNHbkXL4PXwrQ3Sg/image.png) -아래와 같이 main.jsp파일의 소스코드가 현시됩니다. ![](https://cdn.steemitimages.com/DQmYtFmVwztG3oHSrzvM119pEpMdKzToXfxu3uaXeeybYwN/image.png) [방어 코드 작성] -Findbug에서 아래 취약점을 클릭하여 확인합니다. ![](https://cdn.steemitimages.com/DQmQUbQKMDSVrjU4xe4WcDvkwfUhaB4qLUaENa4vyoW7REL/image.png) -외부에서 들어오는 파라미터가 file 클래스에 그대로 사용되며, 이러면 악의적인 파일 요청(../../../../etc/passwd)이 가능해집니다. ![](https://cdn.steemitimages.com/DQmZa2h5xVkskjjMWZdLt4M4LnRREh3aYvXv2BEF3dy2ubY/image.png) -그 위에 있는 코드를 확인하면 아래와 같이 외부값을 입력값으로 받게됩니다. String file = s.getParser().getRawParameter(FILE, ""); -이제 위 코드에 필터를 만들어 입력된 파라미터의 악의적인 코드를 제거해보도록 하겠습니다. SecurityFilter클래스에 아래 다운로드 취약점 제거 메소드를 추가합니다. public static String PathTraversalFilter(String inputData) { inputData = inputData.replaceAll("./", ""); inputData = inputData.replaceAll("../", ""); inputData = inputData.replaceAll("..\\", ""); inputData = inputData.replaceAll("\\\\", ""); return inputData; } -그리고 취약 코드 아래 다음과 같이 input값(file)을 필터링합니다. String file = s.getParser().getRawParameter(FILE, ""); file = SecurityFilter.PathTraversalFilter(file); -자 이제 방어코드를 짰으니 테스트해봐야겠죠? 다들 한번씩 해보세요~~^^
json metadata{"tags":["kr-dev","steemit","dev","security"],"image":["https://cdn.steemitimages.com/DQmX1285d92LTqQJvfEd97kfXqqPcHj4oxHvPXDJ4Ap4v8a/image.png","https://cdn.steemitimages.com/DQmV8Y4szvfq8deduoGFudDx2o1h4ehpiYxHG5H9W7Y93pP/image.png","https://cdn.steemitimages.com/DQmeoAqxUu16QMMDjAETfrdg7BnzMcDd8CgXUFDHUa7V9cE/image.png","https://cdn.steemitimages.com/DQmYKhv5eEa8QEtm8ue2YWw8M6WnexhSnq4Sgf7STEHokVY/image.png","https://cdn.steemitimages.com/DQmQenjMHJUEPe6xcnk9fpqDqdNGgmFqkmgXYJkBoUht1GV/image.png","https://cdn.steemitimages.com/DQmdsGD9kkfm3yrcpJoKzzt1d4QSqAKvh8uzxdRtdihUKka/image.png","https://cdn.steemitimages.com/DQmYQZG34yTx2Xyfr782cRChH3MwzpJjokpXs1Za1hYuBqk/image.png","https://cdn.steemitimages.com/DQmZ2hguaW53hrkHmgJLVk64f4TTbGvpNHbkXL4PXwrQ3Sg/image.png","https://cdn.steemitimages.com/DQmYtFmVwztG3oHSrzvM119pEpMdKzToXfxu3uaXeeybYwN/image.png","https://cdn.steemitimages.com/DQmQUbQKMDSVrjU4xe4WcDvkwfUhaB4qLUaENa4vyoW7REL/image.png","https://cdn.steemitimages.com/DQmZa2h5xVkskjjMWZdLt4M4LnRREh3aYvXv2BEF3dy2ubY/image.png"],"links":["https://portswigger.net/burp/communitydownload"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #25922038/Trx 56f3da0370963a08a0a4a138f62a88ff3be96e1e
View Raw JSON Data
{
  "trx_id": "56f3da0370963a08a0a4a138f62a88ff3be96e1e",
  "block": 25922038,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-13T10:55:18",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "kr-dev",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep9",
      "title": "Job SSul Series 1 : 해킹 방어 실습 - EP9 다운로드 취약점 공격",
      "body": "안녕하세요.\n해킹과 방어 시리즈를 연재하고 있는 Ziqon입니다.\n벌써 9번째 이야기라니.. 많이 왔습니다.\n날씨도 시원해지고~ 다 같이 열공열공!\n이번에는 웹시스템의 다운로드 취약점을 공격하고 방어해보겠습니다.\n다운로드 파라미터에 웹루트의 디렉토리 명령을 집어넣어 시스템 파일 등에 접근하는 기법입니다.\n\n자 그럼~ 돌격 앞으로!!!\n- webgoat 실행 및 왼쪽 메뉴의 Bypass a Path Based AccessControl Schem 에 접속합니다.\n![](https://cdn.steemitimages.com/DQmX1285d92LTqQJvfEd97kfXqqPcHj4oxHvPXDJ4Ap4v8a/image.png)\n\n- 브라우저에서 프록시 설정을 아래와 같이 5000번 포트를 지정해줍니다.\n![](https://cdn.steemitimages.com/DQmV8Y4szvfq8deduoGFudDx2o1h4ehpiYxHG5H9W7Y93pP/image.png)\n\n- 프록시 툴 설정\nhttps://portswigger.net/burp/communitydownload 에서 burp suite를 다운로드받습니다.\n[Proxy]에서 [Options] -> [Add]를 클릭하여 Bind to port는 5000 및 Specific address는 127.0.0.1을 선택하고 설정 값을 저장합니다.\n![](https://cdn.steemitimages.com/DQmeoAqxUu16QMMDjAETfrdg7BnzMcDd8CgXUFDHUa7V9cE/image.png)\n\n-5000번 포트만 체크합니다.\n![](https://cdn.steemitimages.com/DQmYKhv5eEa8QEtm8ue2YWw8M6WnexhSnq4Sgf7STEHokVY/image.png)\n\n-127.0.0.1은 웹브라우저와 프록시 툴간에 인식이 되지 않기 때문에 hosts 파일에 임시로 가상도메인을 추가합니다.\n![](https://cdn.steemitimages.com/DQmQenjMHJUEPe6xcnk9fpqDqdNGgmFqkmgXYJkBoUht1GV/image.png)\n\n-이제 접속주소는 www.mypage.com:8080/WebGoat-5.4.1/attack이되며 Bypass a Path Based AccessControl Schem에서 맨 위의 html파일에 접근합니다.\n\n![](https://cdn.steemitimages.com/DQmdsGD9kkfm3yrcpJoKzzt1d4QSqAKvh8uzxdRtdihUKka/image.png)\n\n-아래 burp에서 해당 파일을 ../../main.jsp로 변조하여 main.jsp에 접근해 봅니다.\n![](https://cdn.steemitimages.com/DQmYQZG34yTx2Xyfr782cRChH3MwzpJjokpXs1Za1hYuBqk/image.png)\n\n![](https://cdn.steemitimages.com/DQmZ2hguaW53hrkHmgJLVk64f4TTbGvpNHbkXL4PXwrQ3Sg/image.png)\n\n-아래와 같이 main.jsp파일의 소스코드가 현시됩니다.\n![](https://cdn.steemitimages.com/DQmYtFmVwztG3oHSrzvM119pEpMdKzToXfxu3uaXeeybYwN/image.png)\n\n\n[방어 코드 작성]\n-Findbug에서 아래 취약점을 클릭하여 확인합니다.\n![](https://cdn.steemitimages.com/DQmQUbQKMDSVrjU4xe4WcDvkwfUhaB4qLUaENa4vyoW7REL/image.png)\n  \n-외부에서 들어오는 파라미터가 file 클래스에 그대로 사용되며, 이러면 악의적인 파일 요청(../../../../etc/passwd)이 가능해집니다.\n![](https://cdn.steemitimages.com/DQmZa2h5xVkskjjMWZdLt4M4LnRREh3aYvXv2BEF3dy2ubY/image.png)\n\n-그 위에 있는 코드를 확인하면 아래와 같이 외부값을 입력값으로 받게됩니다.\nString file = s.getParser().getRawParameter(FILE, \"\");\n\n-이제 위 코드에 필터를 만들어 입력된 파라미터의 악의적인 코드를 제거해보도록 하겠습니다.\nSecurityFilter클래스에 아래 다운로드 취약점 제거 메소드를 추가합니다.\n         public static String PathTraversalFilter(String inputData) {\n\t\tinputData = inputData.replaceAll(\"./\", \"\");\n\t\tinputData = inputData.replaceAll(\"../\", \"\");\n\t\tinputData = inputData.replaceAll(\"..\\\\\", \"\");\n\t\tinputData = inputData.replaceAll(\"\\\\\\\\\", \"\");\n\t\treturn inputData;\n\t}\n\n-그리고 취약 코드 아래 다음과 같이 input값(file)을 필터링합니다.\nString file = s.getParser().getRawParameter(FILE, \"\");\nfile = SecurityFilter.PathTraversalFilter(file);\n\n-자 이제 방어코드를 짰으니 테스트해봐야겠죠?\n 다들 한번씩 해보세요~~^^",
      "json_metadata": "{\"tags\":[\"kr-dev\",\"steemit\",\"dev\",\"security\"],\"image\":[\"https://cdn.steemitimages.com/DQmX1285d92LTqQJvfEd97kfXqqPcHj4oxHvPXDJ4Ap4v8a/image.png\",\"https://cdn.steemitimages.com/DQmV8Y4szvfq8deduoGFudDx2o1h4ehpiYxHG5H9W7Y93pP/image.png\",\"https://cdn.steemitimages.com/DQmeoAqxUu16QMMDjAETfrdg7BnzMcDd8CgXUFDHUa7V9cE/image.png\",\"https://cdn.steemitimages.com/DQmYKhv5eEa8QEtm8ue2YWw8M6WnexhSnq4Sgf7STEHokVY/image.png\",\"https://cdn.steemitimages.com/DQmQenjMHJUEPe6xcnk9fpqDqdNGgmFqkmgXYJkBoUht1GV/image.png\",\"https://cdn.steemitimages.com/DQmdsGD9kkfm3yrcpJoKzzt1d4QSqAKvh8uzxdRtdihUKka/image.png\",\"https://cdn.steemitimages.com/DQmYQZG34yTx2Xyfr782cRChH3MwzpJjokpXs1Za1hYuBqk/image.png\",\"https://cdn.steemitimages.com/DQmZ2hguaW53hrkHmgJLVk64f4TTbGvpNHbkXL4PXwrQ3Sg/image.png\",\"https://cdn.steemitimages.com/DQmYtFmVwztG3oHSrzvM119pEpMdKzToXfxu3uaXeeybYwN/image.png\",\"https://cdn.steemitimages.com/DQmQUbQKMDSVrjU4xe4WcDvkwfUhaB4qLUaENa4vyoW7REL/image.png\",\"https://cdn.steemitimages.com/DQmZa2h5xVkskjjMWZdLt4M4LnRREh3aYvXv2BEF3dy2ubY/image.png\"],\"links\":[\"https://portswigger.net/burp/communitydownload\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
2018/09/13 08:24:18
parent authoranpigon
parent permlinkre-ziqon-job-ssul-series-1-ep8-crlf-injection-20180906t102018455z
authorziqon
permlinkre-anpigon-re-ziqon-job-ssul-series-1-ep8-crlf-injection-20180913t082410306z
title
body아 그런 태그도 있었군용 +o+
json metadata{"tags":["steemit"],"app":"steemit/0.1"}
Transaction InfoBlock #25919020/Trx cc0cccce9c011291699dde45b66866c62ac72a76
View Raw JSON Data
{
  "trx_id": "cc0cccce9c011291699dde45b66866c62ac72a76",
  "block": 25919020,
  "trx_in_block": 9,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-13T08:24:18",
  "op": [
    "comment",
    {
      "parent_author": "anpigon",
      "parent_permlink": "re-ziqon-job-ssul-series-1-ep8-crlf-injection-20180906t102018455z",
      "author": "ziqon",
      "permlink": "re-anpigon-re-ziqon-job-ssul-series-1-ep8-crlf-injection-20180913t082410306z",
      "title": "",
      "body": "아 그런 태그도 있었군용 +o+",
      "json_metadata": "{\"tags\":[\"steemit\"],\"app\":\"steemit/0.1\"}"
    }
  ]
}
2018/09/06 10:31:00
votersteemitag
authorziqon
permlinkjob-ssul-series-1-ep8-crlf-injection
weight1000 (10.00%)
Transaction InfoBlock #25720017/Trx de594be7c54023c2c042bc8c69eead563d1918ca
View Raw JSON Data
{
  "trx_id": "de594be7c54023c2c042bc8c69eead563d1918ca",
  "block": 25720017,
  "trx_in_block": 13,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-06T10:31:00",
  "op": [
    "vote",
    {
      "voter": "steemitag",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep8-crlf-injection",
      "weight": 1000
    }
  ]
}
2018/09/06 10:22:21
voteranpigon
authorziqon
permlinkjob-ssul-series-1-ep7-xss
weight10000 (100.00%)
Transaction InfoBlock #25719844/Trx 965db7a22e74753a0f78bf3cf0784959e466f65b
View Raw JSON Data
{
  "trx_id": "965db7a22e74753a0f78bf3cf0784959e466f65b",
  "block": 25719844,
  "trx_in_block": 31,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-06T10:22:21",
  "op": [
    "vote",
    {
      "voter": "anpigon",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep7-xss",
      "weight": 10000
    }
  ]
}
2018/09/06 10:20:21
parent authorziqon
parent permlinkjob-ssul-series-1-ep8-crlf-injection
authoranpigon
permlinkre-ziqon-job-ssul-series-1-ep8-crlf-injection-20180906t102018455z
title
body잘 읽었습니다. 유익한 정보를 이제야 봤네요. `kr-dev` 태그도 등록하면 좋겠어요~😊
json metadata{"tags":["steemit"],"app":"steemit/0.1"}
Transaction InfoBlock #25719804/Trx 926a86bb8dbd8ef29535b409af45edf947b3c9dd
View Raw JSON Data
{
  "trx_id": "926a86bb8dbd8ef29535b409af45edf947b3c9dd",
  "block": 25719804,
  "trx_in_block": 9,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-06T10:20:21",
  "op": [
    "comment",
    {
      "parent_author": "ziqon",
      "parent_permlink": "job-ssul-series-1-ep8-crlf-injection",
      "author": "anpigon",
      "permlink": "re-ziqon-job-ssul-series-1-ep8-crlf-injection-20180906t102018455z",
      "title": "",
      "body": "잘 읽었습니다. 유익한 정보를 이제야 봤네요. `kr-dev` 태그도 등록하면 좋겠어요~😊",
      "json_metadata": "{\"tags\":[\"steemit\"],\"app\":\"steemit/0.1\"}"
    }
  ]
}
2018/09/06 10:15:09
voteranpigon
authorziqon
permlinkjob-ssul-series-1-ep8-crlf-injection
weight10000 (100.00%)
Transaction InfoBlock #25719700/Trx bee452d958db4ec8ba14b7d14b011ecbf5dd674d
View Raw JSON Data
{
  "trx_id": "bee452d958db4ec8ba14b7d14b011ecbf5dd674d",
  "block": 25719700,
  "trx_in_block": 11,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-06T10:15:09",
  "op": [
    "vote",
    {
      "voter": "anpigon",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep8-crlf-injection",
      "weight": 10000
    }
  ]
}
2018/09/06 10:00:12
parent author
parent permlinksteemit
authorziqon
permlinkjob-ssul-series-1-ep8-crlf-injection
titleJob SSul Series 1 : 해킹 방어 실습 - EP8 CRLF Injection
body안녕하세요. 해킹과 방어 시리즈를 연재하고 있는 Ziqon입니다. 이번엔 그 세번째 공격과 방어를 해보겠습니다. CRLF는 Carriage Return (ASCII 13, \r) Line Feed (ASCII 10, \n)의 줄임말로 HTTP응답분할이라고도 합니다. HTTP Request에 있는 파라미터가 HTTP Response의 응답헤더로 다시 전달되는 경우 파라미터 내 개행문자 ㅊCR, LF 가 존재하면 HTTP 응답이 분리될 수 있습니다. 이러한 취약점을 통해 응답 메시지에 악성 코드를 주입함으로써 XSS 및 캐시를 훼손합니다. 유형은 4가지 정도 사례가 있습니다. 1) 쿠키값(cookieSink)을 응답헤더에 추가하는 경우 response.addCookie(cookieSink); 2) 헤더값에 외부 입력값(data 변수)을 추가하는 경우 response.addHeader("Location", "/author.jsp?lang="+data); 3) 헤더값에 외부 입력값(data)을 덮어쓰는 경우 response.setHeader("Location", "/author.jsp?lang="+data); 4) 로그에 외부 변수 정보를 삽입하는 경우 logger.info("Previous page from request was: " + previousPage) 그럼 공격을 먼저 해보겠습니다. - HTTP Splitting 메뉴를 선택합니다. ![](https://cdn.steemitimages.com/DQmWjBjbwryaMziEcXEjEj9msLYhVBqHRetckeS8L3nxztu/image.png) - HTTP 200 OK를 강제로 보내고 개행문자로 split할 수 있도록 먼저 string 문자를 웹서버가 이해할 수 있는 아스키코드로 인코딩합니다. 인코딩 사이트인 http://yehg.net/encoding/ 로 들어가 아래 문자를 인코딩 시켜 보겠습니다. ---------------------------------- HTTP/1.1 200 OK If-Modified-Since : Fri, 30 Dec 2099 18:40:22 GMT Last-Modified: Fri, 30 Dec 2099 18:40:22 GMT ---------------------------------- ![](https://cdn.steemitimages.com/DQmXg6MKn3xbvePaQpXZYToXYKeKG8mFJqSGmwegYN1ufQy/image.png) ![](https://cdn.steemitimages.com/DQmV2uxrxE81nbGqLKae7PqP1tk9XnRjC7G2d5WpBG5zCVw/image.png) - 인코딩된 값으로 아래 값이 도출됩니다 HTTP%2F1.1%20200%20OK%0D%0AIf-Modified-Since%20%3A%20Fri%2C%2030%20Dec%202099%2018%3A40%3A22%20GMT%0D%0ALast-Modified%3A%20Fri%2C%2030%20Dec%202099%2018%3A40%3A22%20GMT - 다시 webgoat로 가서 인코딩된 값을 입력합니다. ![](https://cdn.steemitimages.com/DQmbAbKZnvHJURyptmjK1q9DgoggTxGR5FzRVuHEmcnoMUH/image.png) - search버튼을 누르면!!! ![](https://cdn.steemitimages.com/DQmSATXkzWciSWFU7d1cYkS4PdxuJTBQ6b8yGHnHJ2XceV1/image.png) - 성공했습니다! 자 이번엔 이 공격을 방어할 수 있는 코드을 짜보겠습니다. 이클립스로 들어가 BugExplorer창에 관련 취약점이 2개가 탐지되었습니다. ![](https://cdn.steemitimages.com/DQmWgoqPrJnmzhYaHD7gpKjRQ5koJ1wVFjXYpdf5oLtBJXG/image.png) - 해당 소스에 들어가보면 아래와 같이 if ~ else ~ 문에 각기 사이좋게 모여있음을 확인할 수 있습니다. 여기서 실제 수정해야 할 취약점 원인이 되는 코드는 String cookie = s.getCookie(UNIQUE2U); 에서 쿠키값을 읽어 바로 response.setHeader메소드의 변수값으로 넣어버리는 부분입니다. ![](https://cdn.steemitimages.com/DQmaJkwKHS9S7qu6e7TPPq5rvocvndkZC1sauVdABcUGQuy/image.png) - 자 이제 필터를 하나 만들어서 CR, LF가 들어올 경우 치환을 해볼까요? 역시나 SecurityFilter.java에 메소드를 추가해 봅니다. CRLFFilter를 아래와 같이 개행문자를 ""로 변환하는 메소드로 작성합니다. ![](https://cdn.steemitimages.com/DQmWFFaK37Vgw4yjnu61rxDawYGrvQJ2iC2FoATKUfwsWVn/image.png) - 이제 다시 문제가 되는 코드로 돌아가서 아래와 같이 cookie변수를 필터링합니다. ![](https://cdn.steemitimages.com/DQmQW4gZ1s3Ra5FWDhm6aR46x3F1s3GC8AUyRmKQv6oGsMK/image.png) - findbugs를 다시 한번 돌려보면 해당 취약점이 여전히 남아 있게 된다. findbugs가 CRLF Filter 툴을 분석하지 못했기 때문이면 이러한 경우 취약점이 제거되었다라고 예외처리하면 된다. 예외처리 방법은 아래와 같이 처리한다. ![](https://cdn.steemitimages.com/DQmQLxJEW9DEE3rBQtmz3HT3t7Z3BbGdwzaUXwYVJJm4DE4/image.png) 이상 CRLF Injection 공격과 방어를 살펴보았습니다. 다같이 힘을 내어 열공!열공!
json metadata{"tags":["steemit","security","education","kr"],"image":["https://cdn.steemitimages.com/DQmWjBjbwryaMziEcXEjEj9msLYhVBqHRetckeS8L3nxztu/image.png","https://cdn.steemitimages.com/DQmXg6MKn3xbvePaQpXZYToXYKeKG8mFJqSGmwegYN1ufQy/image.png","https://cdn.steemitimages.com/DQmV2uxrxE81nbGqLKae7PqP1tk9XnRjC7G2d5WpBG5zCVw/image.png","https://cdn.steemitimages.com/DQmbAbKZnvHJURyptmjK1q9DgoggTxGR5FzRVuHEmcnoMUH/image.png","https://cdn.steemitimages.com/DQmSATXkzWciSWFU7d1cYkS4PdxuJTBQ6b8yGHnHJ2XceV1/image.png","https://cdn.steemitimages.com/DQmWgoqPrJnmzhYaHD7gpKjRQ5koJ1wVFjXYpdf5oLtBJXG/image.png","https://cdn.steemitimages.com/DQmaJkwKHS9S7qu6e7TPPq5rvocvndkZC1sauVdABcUGQuy/image.png","https://cdn.steemitimages.com/DQmWFFaK37Vgw4yjnu61rxDawYGrvQJ2iC2FoATKUfwsWVn/image.png","https://cdn.steemitimages.com/DQmQW4gZ1s3Ra5FWDhm6aR46x3F1s3GC8AUyRmKQv6oGsMK/image.png","https://cdn.steemitimages.com/DQmQLxJEW9DEE3rBQtmz3HT3t7Z3BbGdwzaUXwYVJJm4DE4/image.png"],"links":["http://yehg.net/encoding/"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #25719401/Trx a4185542692d5e7ffc683e9d558dc1896c3261e6
View Raw JSON Data
{
  "trx_id": "a4185542692d5e7ffc683e9d558dc1896c3261e6",
  "block": 25719401,
  "trx_in_block": 24,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-06T10:00:12",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "steemit",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep8-crlf-injection",
      "title": "Job SSul Series 1 : 해킹 방어 실습 - EP8 CRLF Injection",
      "body": "안녕하세요.\n해킹과 방어 시리즈를 연재하고 있는 Ziqon입니다.\n이번엔 그 세번째 공격과 방어를 해보겠습니다.\nCRLF는 Carriage Return (ASCII 13, \\r) Line Feed (ASCII 10, \\n)의 줄임말로 HTTP응답분할이라고도 합니다.\nHTTP Request에 있는 파라미터가 HTTP Response의 응답헤더로 다시 전달되는 경우 파라미터 내 개행문자 ㅊCR, LF 가 존재하면 HTTP 응답이 분리될 수 있습니다.  이러한 취약점을 통해 응답 메시지에 악성 코드를 주입함으로써 XSS 및 캐시를 훼손합니다.\n\n유형은 4가지 정도 사례가 있습니다.\n1) 쿠키값(cookieSink)을 응답헤더에 추가하는 경우\n  response.addCookie(cookieSink);\n\n2) 헤더값에 외부 입력값(data 변수)을 추가하는 경우\n  response.addHeader(\"Location\", \"/author.jsp?lang=\"+data);\n\n3) 헤더값에 외부 입력값(data)을 덮어쓰는 경우\n  response.setHeader(\"Location\", \"/author.jsp?lang=\"+data);\n\n4) 로그에 외부 변수 정보를 삽입하는 경우\n  logger.info(\"Previous page from request was: \" + previousPage)\n\n그럼 공격을 먼저 해보겠습니다.\n - HTTP Splitting 메뉴를 선택합니다.\n![](https://cdn.steemitimages.com/DQmWjBjbwryaMziEcXEjEj9msLYhVBqHRetckeS8L3nxztu/image.png)\n\n - HTTP 200 OK를 강제로 보내고 개행문자로 split할 수 있도록 먼저 string 문자를 웹서버가 이해할 수 있는 아스키코드로 인코딩합니다. 인코딩 사이트인 http://yehg.net/encoding/ 로 들어가 아래 문자를 인코딩 시켜 보겠습니다.\n----------------------------------\nHTTP/1.1 200 OK\nIf-Modified-Since : Fri, 30 Dec 2099 18:40:22 GMT\nLast-Modified: Fri, 30 Dec 2099 18:40:22 GMT\n----------------------------------\n\n![](https://cdn.steemitimages.com/DQmXg6MKn3xbvePaQpXZYToXYKeKG8mFJqSGmwegYN1ufQy/image.png)\n\n![](https://cdn.steemitimages.com/DQmV2uxrxE81nbGqLKae7PqP1tk9XnRjC7G2d5WpBG5zCVw/image.png)\n\n- 인코딩된 값으로 아래 값이 도출됩니다\nHTTP%2F1.1%20200%20OK%0D%0AIf-Modified-Since%20%3A%20Fri%2C%2030%20Dec%202099%2018%3A40%3A22%20GMT%0D%0ALast-Modified%3A%20Fri%2C%2030%20Dec%202099%2018%3A40%3A22%20GMT\n\n- 다시 webgoat로 가서 인코딩된 값을 입력합니다.\n![](https://cdn.steemitimages.com/DQmbAbKZnvHJURyptmjK1q9DgoggTxGR5FzRVuHEmcnoMUH/image.png)\n\n- search버튼을 누르면!!!\n![](https://cdn.steemitimages.com/DQmSATXkzWciSWFU7d1cYkS4PdxuJTBQ6b8yGHnHJ2XceV1/image.png)\n\n- 성공했습니다! 자 이번엔 이 공격을 방어할 수 있는 코드을 짜보겠습니다. 이클립스로 들어가 BugExplorer창에 관련 취약점이 2개가 탐지되었습니다.\n![](https://cdn.steemitimages.com/DQmWgoqPrJnmzhYaHD7gpKjRQ5koJ1wVFjXYpdf5oLtBJXG/image.png)\n\n- 해당 소스에 들어가보면 아래와 같이 if ~ else ~ 문에 각기 사이좋게 모여있음을 확인할 수 있습니다.\n  여기서 실제 수정해야 할 취약점 원인이 되는 코드는 String cookie = s.getCookie(UNIQUE2U); 에서 쿠키값을 읽어 바로 response.setHeader메소드의 변수값으로 넣어버리는 부분입니다.\n![](https://cdn.steemitimages.com/DQmaJkwKHS9S7qu6e7TPPq5rvocvndkZC1sauVdABcUGQuy/image.png)\n\n- 자 이제 필터를 하나 만들어서 CR, LF가 들어올 경우 치환을 해볼까요? 역시나 SecurityFilter.java에 메소드를 추가해 봅니다. CRLFFilter를 아래와 같이 개행문자를 \"\"로 변환하는 메소드로 작성합니다.\n![](https://cdn.steemitimages.com/DQmWFFaK37Vgw4yjnu61rxDawYGrvQJ2iC2FoATKUfwsWVn/image.png)\n\n- 이제 다시 문제가 되는 코드로 돌아가서 아래와 같이 cookie변수를 필터링합니다.\n![](https://cdn.steemitimages.com/DQmQW4gZ1s3Ra5FWDhm6aR46x3F1s3GC8AUyRmKQv6oGsMK/image.png)\n\n\n- findbugs를 다시 한번 돌려보면 해당 취약점이 여전히 남아 있게 된다. findbugs가 CRLF Filter 툴을 분석하지 못했기 때문이면 이러한 경우 취약점이 제거되었다라고 예외처리하면 된다.\n예외처리 방법은 아래와 같이 처리한다.\n![](https://cdn.steemitimages.com/DQmQLxJEW9DEE3rBQtmz3HT3t7Z3BbGdwzaUXwYVJJm4DE4/image.png)\n\n이상 CRLF Injection 공격과 방어를 살펴보았습니다.\n다같이 힘을 내어 열공!열공!",
      "json_metadata": "{\"tags\":[\"steemit\",\"security\",\"education\",\"kr\"],\"image\":[\"https://cdn.steemitimages.com/DQmWjBjbwryaMziEcXEjEj9msLYhVBqHRetckeS8L3nxztu/image.png\",\"https://cdn.steemitimages.com/DQmXg6MKn3xbvePaQpXZYToXYKeKG8mFJqSGmwegYN1ufQy/image.png\",\"https://cdn.steemitimages.com/DQmV2uxrxE81nbGqLKae7PqP1tk9XnRjC7G2d5WpBG5zCVw/image.png\",\"https://cdn.steemitimages.com/DQmbAbKZnvHJURyptmjK1q9DgoggTxGR5FzRVuHEmcnoMUH/image.png\",\"https://cdn.steemitimages.com/DQmSATXkzWciSWFU7d1cYkS4PdxuJTBQ6b8yGHnHJ2XceV1/image.png\",\"https://cdn.steemitimages.com/DQmWgoqPrJnmzhYaHD7gpKjRQ5koJ1wVFjXYpdf5oLtBJXG/image.png\",\"https://cdn.steemitimages.com/DQmaJkwKHS9S7qu6e7TPPq5rvocvndkZC1sauVdABcUGQuy/image.png\",\"https://cdn.steemitimages.com/DQmWFFaK37Vgw4yjnu61rxDawYGrvQJ2iC2FoATKUfwsWVn/image.png\",\"https://cdn.steemitimages.com/DQmQW4gZ1s3Ra5FWDhm6aR46x3F1s3GC8AUyRmKQv6oGsMK/image.png\",\"https://cdn.steemitimages.com/DQmQLxJEW9DEE3rBQtmz3HT3t7Z3BbGdwzaUXwYVJJm4DE4/image.png\"],\"links\":[\"http://yehg.net/encoding/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
2018/09/04 22:43:27
voterziqon
authorziqon
permlinkjob-ssul-series-1-ep7-xss
weight10000 (100.00%)
Transaction InfoBlock #25677092/Trx 649f66b9645398aef0d1262852d8d3fa3638847c
View Raw JSON Data
{
  "trx_id": "649f66b9645398aef0d1262852d8d3fa3638847c",
  "block": 25677092,
  "trx_in_block": 20,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-04T22:43:27",
  "op": [
    "vote",
    {
      "voter": "ziqon",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep7-xss",
      "weight": 10000
    }
  ]
}
2018/09/04 11:06:15
voterurbanplanner
authorziqon
permlinkjob-ssul-series-1-ep7-xss
weight10000 (100.00%)
Transaction InfoBlock #25663155/Trx 9865e417904f466c61c8c132d6c45c746f51ec95
View Raw JSON Data
{
  "trx_id": "9865e417904f466c61c8c132d6c45c746f51ec95",
  "block": 25663155,
  "trx_in_block": 19,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-04T11:06:15",
  "op": [
    "vote",
    {
      "voter": "urbanplanner",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep7-xss",
      "weight": 10000
    }
  ]
}
2018/09/04 10:58:33
voteralphabot
authorziqon
permlinkjob-ssul-series-1-ep7-xss
weight100 (1.00%)
Transaction InfoBlock #25663001/Trx e94d283f650d6267b9c5f0ab6ec527dd85242d4e
View Raw JSON Data
{
  "trx_id": "e94d283f650d6267b9c5f0ab6ec527dd85242d4e",
  "block": 25663001,
  "trx_in_block": 10,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-04T10:58:33",
  "op": [
    "vote",
    {
      "voter": "alphabot",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep7-xss",
      "weight": 100
    }
  ]
}
2018/09/04 10:58:24
voterfastresteem
authorziqon
permlinkjob-ssul-series-1-ep7-xss
weight100 (1.00%)
Transaction InfoBlock #25662998/Trx f25641398c8c84d9b70e1cc2fda3a3a08d537619
View Raw JSON Data
{
  "trx_id": "f25641398c8c84d9b70e1cc2fda3a3a08d537619",
  "block": 25662998,
  "trx_in_block": 17,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-04T10:58:24",
  "op": [
    "vote",
    {
      "voter": "fastresteem",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep7-xss",
      "weight": 100
    }
  ]
}
ziqonpublished a new post: job-ssul-series-1-ep7-xss
2018/09/04 10:58:18
parent author
parent permlinksteemit
authorziqon
permlinkjob-ssul-series-1-ep7-xss
titleJob SSul Series 1 : 해킹 방어 실습 - EP7 XSS
body안녕하세요. 해킹과 방어 시리즈를 연재하고 있는 Ziqon입니다. 이번엔 그 두번째 공격과 방어를 해보겠습니다. 게시판 등에 악의적인 스크립트를 넣어 조회자의 세션을 탈취할 수 있는 공격! 바로 XSS(Cross site scripting)입니다. - XSS메뉴에서 Tom Cat 계정으로 로그인하기 (암호 : tom) ![](https://cdn.steemitimages.com/DQmQf1sM2BU78wwAhTLUn28AG6CrZK41qpykkKh8WApMzZX/image.png) - ViewProfile 버튼 클릭 후 EditProfile클릭 ![](https://cdn.steemitimages.com/DQma3t5kHtz7cRXDyaapRm5Em4KtpRUZrYLnJaF8DYE9njB/image.png) - street필드 마지막에 아래 스크립트 삽입하고 UpdateProfile버튼 클릭 ![](https://cdn.steemitimages.com/DQmc1y1LZNRHF5yAfiPEzgWmsC7zZrQi8ZGKdeBua6nkCaN/image.png) ![](https://cdn.steemitimages.com/DQmXdaZ7shEsWrCcfEwTsWFQcDwviRR9an7SGLCZ7KtVeCe/image.png) 위는 간단한 스트링으로 XSS 공격이 먹힌다는 걸 검증하기 위해서이며 실제 공격자는 아래와 같은 형태로 스크립트를 작성합니다. ![](https://cdn.steemitimages.com/DQmaKC1obeFBXVB3UVTdTu3v71j9CEnNuSaNq3GkBrawb4x/image.png) 이러면 사용자의 쿠키값을 공격자가 원하는 서버로 전송하게 됩니다. - 피해자의 입장에서 새롭게 로그인을 합니다. Jerry Mouse로 로그인하며 암호는 Jerry입니다. ![](https://cdn.steemitimages.com/DQmP6LvYYaNrFiCmn6CjDNxb25Qru69MVzEqqLCpagzNhcz/image.png) - 로그인 후 , 직원 목록에서 tom cat의 프로파일을 조회합니다. ![](https://cdn.steemitimages.com/DQmdEdPYEBq4jj21iARSuoJidfxbEQt9NX3hr3Hdz6v7brD/image.png) - 해킹되었다는 Alert창이 뜹니다. ![](https://cdn.steemitimages.com/DQmeBhrTtp3hkfaotJbMyyHTgmT1tr9JKBvCWhnLzXoV2Lp/image.png) 이제 코드 수정을 해보도록 하겠습니다 - SQL인젝션에서 했었던 것처럼 위험도 상(Scary)에서 Normal Confidence의 Potential XSS in Servlet 부분으로 탐지된 것을 확인합니다. ![](https://cdn.steemitimages.com/DQmPvV4jRpPgtvPhPnrranC6mwWJB8pmhGd3sXApF33Lyax/image.png) - Out객체들은 입력값을 출력하는 부분으로 XSS의 취약점이 발생하는 부분입니다. ![](https://cdn.steemitimages.com/DQmcSUJjsGWy1axSc3fMYLku8KAwoSHQ1c6UVBWAZpJsono/image.png) - 위 취약점을 제거하기 위해서는 외부 입력값에 대한 악의적인 문자열을 제거하는 보안 필터(클래스)를 사용해야 합니다. 필터의 동작 방식은 아래와 같습니다. ![](https://cdn.steemitimages.com/DQmWbq54vYXFugzASU4UaYNzjTXus4AVYdRrLth6qqQF2wY/image.png) - 아래 path에 클래스를 생성합니다. ![](https://cdn.steemitimages.com/DQmQtRGWA8YSsC4y2DYuwgjihXEzMk6JZuwoGsEvWmF7kPe/image.png) - 클래스 이름은 securityFilter로 합니다. ![](https://cdn.steemitimages.com/DQmaEidW327NUpPyu8yyusNxbkTYu84vGm3t7nBHq6C96zd/image.png) - XSS에 사용되는 "<", ">"문자열을 Null로 만들도록 코딩해보겠습니다. ![](https://cdn.steemitimages.com/DQme9NYpwcjBPwxMbfSNBGyoWnuFmdPHBxP2RPPEyNf2auh/image.png) - 이제 만든 필터를 써볼까요? 아까 취약점이라고 발견된 곳에 돌아가 아래와 같이 필터를 적용합니다. ![](https://cdn.steemitimages.com/DQmPRxJ9JxxeW1PmweapxFqRxik1ppZ6n8GrXvfc9BVr3qx/image.png) -그러나 여전히 차단되지 않고 있습니다. ![](https://cdn.steemitimages.com/DQmSZDQRouLvLB6DHXMd7cUL2LW3VBQGp6Tt3qxzqAsANC7/image.png) - 그 이유는 findbugs가 java파일의 취약점만 탐지가능하고 JSP등은 탐지가 어려운 한계를 가지고 있기 때문입니다. JSP파일에서 XSS를 방어하는 코딩을 해보겠습니다. -먼저 http://tomcat.apache.org/taglibs/standard/에서 download -> binaries 디렉터리에서 jakarta-taglibs-standard-1.1.1.zip을 다운로드 받습니다. ![](https://cdn.steemitimages.com/DQmbU4zEdyHxcamnnp8bFCtsCjc3PKGKB7qwAMn5DJgN1Qe/image.png) ![](https://cdn.steemitimages.com/DQmXhScysGhb9mRm5XZzgskxwNPWasDXgRksp2NNbNCaSES/image.png) - 압축을 풀고 lib에 있는 jstl.jar, stanard.jar를 WEB-INF하위 lib디렉터리에 놓습니다. ![](https://cdn.steemitimages.com/DQmVSkFFkMKtxSAX9wddjNLQg6CNyCjWeoLtxGmSVQhubRX/image.png) - 이제 취약한JSP파일을 열어보겠습니다. ![](https://cdn.steemitimages.com/DQmQh4e14rrE2g8s7ps74EvVx1skPr5x8wpM5R5HLAjF49z/image.png) - JSTL표현식으로 수정하면.. 취약코드 : <%=employee.getAddress1()%> 수정코드 : <c:out value="${employee.getAddress1()}"></c:out> - 팝업이 차단되고 정상적으로 표시되는 것을 볼 수 있습니다. ![](https://cdn.steemitimages.com/DQmZNUWeP5hFXUErnRkvoM48GpKKcfsHj8LoZa3Yjei1fkc/image.png) 이것으로 오늘의 강좌를 마칩니다..
json metadata{"tags":["steemit","security","education","kr"],"image":["https://cdn.steemitimages.com/DQmQf1sM2BU78wwAhTLUn28AG6CrZK41qpykkKh8WApMzZX/image.png","https://cdn.steemitimages.com/DQma3t5kHtz7cRXDyaapRm5Em4KtpRUZrYLnJaF8DYE9njB/image.png","https://cdn.steemitimages.com/DQmc1y1LZNRHF5yAfiPEzgWmsC7zZrQi8ZGKdeBua6nkCaN/image.png","https://cdn.steemitimages.com/DQmXdaZ7shEsWrCcfEwTsWFQcDwviRR9an7SGLCZ7KtVeCe/image.png","https://cdn.steemitimages.com/DQmaKC1obeFBXVB3UVTdTu3v71j9CEnNuSaNq3GkBrawb4x/image.png","https://cdn.steemitimages.com/DQmP6LvYYaNrFiCmn6CjDNxb25Qru69MVzEqqLCpagzNhcz/image.png","https://cdn.steemitimages.com/DQmdEdPYEBq4jj21iARSuoJidfxbEQt9NX3hr3Hdz6v7brD/image.png","https://cdn.steemitimages.com/DQmeBhrTtp3hkfaotJbMyyHTgmT1tr9JKBvCWhnLzXoV2Lp/image.png","https://cdn.steemitimages.com/DQmPvV4jRpPgtvPhPnrranC6mwWJB8pmhGd3sXApF33Lyax/image.png","https://cdn.steemitimages.com/DQmcSUJjsGWy1axSc3fMYLku8KAwoSHQ1c6UVBWAZpJsono/image.png","https://cdn.steemitimages.com/DQmWbq54vYXFugzASU4UaYNzjTXus4AVYdRrLth6qqQF2wY/image.png","https://cdn.steemitimages.com/DQmQtRGWA8YSsC4y2DYuwgjihXEzMk6JZuwoGsEvWmF7kPe/image.png","https://cdn.steemitimages.com/DQmaEidW327NUpPyu8yyusNxbkTYu84vGm3t7nBHq6C96zd/image.png","https://cdn.steemitimages.com/DQme9NYpwcjBPwxMbfSNBGyoWnuFmdPHBxP2RPPEyNf2auh/image.png","https://cdn.steemitimages.com/DQmPRxJ9JxxeW1PmweapxFqRxik1ppZ6n8GrXvfc9BVr3qx/image.png","https://cdn.steemitimages.com/DQmSZDQRouLvLB6DHXMd7cUL2LW3VBQGp6Tt3qxzqAsANC7/image.png","https://cdn.steemitimages.com/DQmbU4zEdyHxcamnnp8bFCtsCjc3PKGKB7qwAMn5DJgN1Qe/image.png","https://cdn.steemitimages.com/DQmXhScysGhb9mRm5XZzgskxwNPWasDXgRksp2NNbNCaSES/image.png","https://cdn.steemitimages.com/DQmVSkFFkMKtxSAX9wddjNLQg6CNyCjWeoLtxGmSVQhubRX/image.png","https://cdn.steemitimages.com/DQmQh4e14rrE2g8s7ps74EvVx1skPr5x8wpM5R5HLAjF49z/image.png","https://cdn.steemitimages.com/DQmZNUWeP5hFXUErnRkvoM48GpKKcfsHj8LoZa3Yjei1fkc/image.png"],"links":["http://tomcat.apache.org/taglibs/standard/에서"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #25662996/Trx beef5509edb4d6f37774c5234a4f6bcb74ce5d29
View Raw JSON Data
{
  "trx_id": "beef5509edb4d6f37774c5234a4f6bcb74ce5d29",
  "block": 25662996,
  "trx_in_block": 17,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-04T10:58:18",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "steemit",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep7-xss",
      "title": "Job SSul Series 1 : 해킹 방어 실습 - EP7 XSS",
      "body": "안녕하세요.\n해킹과 방어 시리즈를 연재하고 있는 Ziqon입니다.\n이번엔 그 두번째 공격과 방어를 해보겠습니다.\n게시판 등에 악의적인 스크립트를 넣어 조회자의 세션을 탈취할 수 있는 공격!\n바로 XSS(Cross site scripting)입니다.\n\n- XSS메뉴에서 Tom Cat 계정으로 로그인하기 (암호 : tom)\n![](https://cdn.steemitimages.com/DQmQf1sM2BU78wwAhTLUn28AG6CrZK41qpykkKh8WApMzZX/image.png)\n\n- ViewProfile 버튼 클릭 후 EditProfile클릭\n![](https://cdn.steemitimages.com/DQma3t5kHtz7cRXDyaapRm5Em4KtpRUZrYLnJaF8DYE9njB/image.png)\n\n- street필드 마지막에 아래 스크립트 삽입하고 UpdateProfile버튼 클릭\n\n![](https://cdn.steemitimages.com/DQmc1y1LZNRHF5yAfiPEzgWmsC7zZrQi8ZGKdeBua6nkCaN/image.png)\n\n![](https://cdn.steemitimages.com/DQmXdaZ7shEsWrCcfEwTsWFQcDwviRR9an7SGLCZ7KtVeCe/image.png)\n\n위는 간단한 스트링으로 XSS 공격이 먹힌다는 걸 검증하기 위해서이며 실제 공격자는 아래와 같은 형태로 스크립트를 작성합니다.\n\n![](https://cdn.steemitimages.com/DQmaKC1obeFBXVB3UVTdTu3v71j9CEnNuSaNq3GkBrawb4x/image.png)\n\n이러면 사용자의 쿠키값을 공격자가 원하는 서버로 전송하게 됩니다.\n\n- 피해자의 입장에서 새롭게 로그인을 합니다. Jerry Mouse로 로그인하며 암호는 Jerry입니다.\n\n![](https://cdn.steemitimages.com/DQmP6LvYYaNrFiCmn6CjDNxb25Qru69MVzEqqLCpagzNhcz/image.png)\n\n- 로그인 후 , 직원 목록에서 tom cat의 프로파일을 조회합니다.\n![](https://cdn.steemitimages.com/DQmdEdPYEBq4jj21iARSuoJidfxbEQt9NX3hr3Hdz6v7brD/image.png)\n\n- 해킹되었다는 Alert창이 뜹니다.\n![](https://cdn.steemitimages.com/DQmeBhrTtp3hkfaotJbMyyHTgmT1tr9JKBvCWhnLzXoV2Lp/image.png)\n\n이제 코드 수정을 해보도록 하겠습니다\n\n- SQL인젝션에서 했었던 것처럼 위험도 상(Scary)에서 Normal Confidence의 Potential XSS in Servlet 부분으로 탐지된 것을 확인합니다.\n![](https://cdn.steemitimages.com/DQmPvV4jRpPgtvPhPnrranC6mwWJB8pmhGd3sXApF33Lyax/image.png)\n\n- Out객체들은 입력값을 출력하는 부분으로 XSS의 취약점이 발생하는 부분입니다.\n![](https://cdn.steemitimages.com/DQmcSUJjsGWy1axSc3fMYLku8KAwoSHQ1c6UVBWAZpJsono/image.png)\n\n- 위 취약점을 제거하기 위해서는 외부 입력값에 대한 악의적인 문자열을 제거하는 보안 필터(클래스)를 사용해야 합니다. 필터의 동작 방식은 아래와 같습니다.\n![](https://cdn.steemitimages.com/DQmWbq54vYXFugzASU4UaYNzjTXus4AVYdRrLth6qqQF2wY/image.png)\n\n- 아래 path에 클래스를 생성합니다.\n![](https://cdn.steemitimages.com/DQmQtRGWA8YSsC4y2DYuwgjihXEzMk6JZuwoGsEvWmF7kPe/image.png)\n\n- 클래스 이름은 securityFilter로 합니다.\n ![](https://cdn.steemitimages.com/DQmaEidW327NUpPyu8yyusNxbkTYu84vGm3t7nBHq6C96zd/image.png)\n\n- XSS에 사용되는 \"<\", \">\"문자열을 Null로 만들도록 코딩해보겠습니다.\n![](https://cdn.steemitimages.com/DQme9NYpwcjBPwxMbfSNBGyoWnuFmdPHBxP2RPPEyNf2auh/image.png)\n\n- 이제 만든 필터를 써볼까요? 아까 취약점이라고 발견된 곳에 돌아가 아래와 같이 필터를 적용합니다.\n![](https://cdn.steemitimages.com/DQmPRxJ9JxxeW1PmweapxFqRxik1ppZ6n8GrXvfc9BVr3qx/image.png)\n\n-그러나 여전히 차단되지 않고 있습니다.\n![](https://cdn.steemitimages.com/DQmSZDQRouLvLB6DHXMd7cUL2LW3VBQGp6Tt3qxzqAsANC7/image.png)\n\n- 그 이유는 findbugs가 java파일의 취약점만 탐지가능하고 JSP등은 탐지가 어려운 한계를 가지고 있기 때문입니다.\n  JSP파일에서 XSS를 방어하는 코딩을 해보겠습니다.\n\n-먼저 http://tomcat.apache.org/taglibs/standard/에서 download -> binaries 디렉터리에서 jakarta-taglibs-standard-1.1.1.zip을 다운로드 받습니다.\n\n![](https://cdn.steemitimages.com/DQmbU4zEdyHxcamnnp8bFCtsCjc3PKGKB7qwAMn5DJgN1Qe/image.png) \n![](https://cdn.steemitimages.com/DQmXhScysGhb9mRm5XZzgskxwNPWasDXgRksp2NNbNCaSES/image.png)\n\n- 압축을 풀고 lib에 있는 jstl.jar, stanard.jar를 WEB-INF하위 lib디렉터리에 놓습니다.\n![](https://cdn.steemitimages.com/DQmVSkFFkMKtxSAX9wddjNLQg6CNyCjWeoLtxGmSVQhubRX/image.png)\n\n- 이제 취약한JSP파일을 열어보겠습니다.\n![](https://cdn.steemitimages.com/DQmQh4e14rrE2g8s7ps74EvVx1skPr5x8wpM5R5HLAjF49z/image.png)\n\n- JSTL표현식으로 수정하면..\n 취약코드 : <%=employee.getAddress1()%>\n 수정코드 : <c:out value=\"${employee.getAddress1()}\"></c:out>\n\n- 팝업이 차단되고 정상적으로 표시되는 것을 볼 수 있습니다.\n![](https://cdn.steemitimages.com/DQmZNUWeP5hFXUErnRkvoM48GpKKcfsHj8LoZa3Yjei1fkc/image.png)\n\n이것으로 오늘의 강좌를 마칩니다..",
      "json_metadata": "{\"tags\":[\"steemit\",\"security\",\"education\",\"kr\"],\"image\":[\"https://cdn.steemitimages.com/DQmQf1sM2BU78wwAhTLUn28AG6CrZK41qpykkKh8WApMzZX/image.png\",\"https://cdn.steemitimages.com/DQma3t5kHtz7cRXDyaapRm5Em4KtpRUZrYLnJaF8DYE9njB/image.png\",\"https://cdn.steemitimages.com/DQmc1y1LZNRHF5yAfiPEzgWmsC7zZrQi8ZGKdeBua6nkCaN/image.png\",\"https://cdn.steemitimages.com/DQmXdaZ7shEsWrCcfEwTsWFQcDwviRR9an7SGLCZ7KtVeCe/image.png\",\"https://cdn.steemitimages.com/DQmaKC1obeFBXVB3UVTdTu3v71j9CEnNuSaNq3GkBrawb4x/image.png\",\"https://cdn.steemitimages.com/DQmP6LvYYaNrFiCmn6CjDNxb25Qru69MVzEqqLCpagzNhcz/image.png\",\"https://cdn.steemitimages.com/DQmdEdPYEBq4jj21iARSuoJidfxbEQt9NX3hr3Hdz6v7brD/image.png\",\"https://cdn.steemitimages.com/DQmeBhrTtp3hkfaotJbMyyHTgmT1tr9JKBvCWhnLzXoV2Lp/image.png\",\"https://cdn.steemitimages.com/DQmPvV4jRpPgtvPhPnrranC6mwWJB8pmhGd3sXApF33Lyax/image.png\",\"https://cdn.steemitimages.com/DQmcSUJjsGWy1axSc3fMYLku8KAwoSHQ1c6UVBWAZpJsono/image.png\",\"https://cdn.steemitimages.com/DQmWbq54vYXFugzASU4UaYNzjTXus4AVYdRrLth6qqQF2wY/image.png\",\"https://cdn.steemitimages.com/DQmQtRGWA8YSsC4y2DYuwgjihXEzMk6JZuwoGsEvWmF7kPe/image.png\",\"https://cdn.steemitimages.com/DQmaEidW327NUpPyu8yyusNxbkTYu84vGm3t7nBHq6C96zd/image.png\",\"https://cdn.steemitimages.com/DQme9NYpwcjBPwxMbfSNBGyoWnuFmdPHBxP2RPPEyNf2auh/image.png\",\"https://cdn.steemitimages.com/DQmPRxJ9JxxeW1PmweapxFqRxik1ppZ6n8GrXvfc9BVr3qx/image.png\",\"https://cdn.steemitimages.com/DQmSZDQRouLvLB6DHXMd7cUL2LW3VBQGp6Tt3qxzqAsANC7/image.png\",\"https://cdn.steemitimages.com/DQmbU4zEdyHxcamnnp8bFCtsCjc3PKGKB7qwAMn5DJgN1Qe/image.png\",\"https://cdn.steemitimages.com/DQmXhScysGhb9mRm5XZzgskxwNPWasDXgRksp2NNbNCaSES/image.png\",\"https://cdn.steemitimages.com/DQmVSkFFkMKtxSAX9wddjNLQg6CNyCjWeoLtxGmSVQhubRX/image.png\",\"https://cdn.steemitimages.com/DQmQh4e14rrE2g8s7ps74EvVx1skPr5x8wpM5R5HLAjF49z/image.png\",\"https://cdn.steemitimages.com/DQmZNUWeP5hFXUErnRkvoM48GpKKcfsHj8LoZa3Yjei1fkc/image.png\"],\"links\":[\"http://tomcat.apache.org/taglibs/standard/에서\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
ziqonreceived 0.011 STEEM, 0.014 SP author reward for @ziqon / 2rdoam
2018/08/31 08:12:15
authorziqon
permlink2rdoam
sbd payout0.000 SBD
steem payout0.011 STEEM
vesting payout22.258052 VESTS
Transaction InfoBlock #25544548/Virtual Operation #8
View Raw JSON Data
{
  "trx_id": "0000000000000000000000000000000000000000",
  "block": 25544548,
  "trx_in_block": 4294967295,
  "op_in_trx": 0,
  "virtual_op": 8,
  "timestamp": "2018-08-31T08:12:15",
  "op": [
    "author_reward",
    {
      "author": "ziqon",
      "permlink": "2rdoam",
      "sbd_payout": "0.000 SBD",
      "steem_payout": "0.011 STEEM",
      "vesting_payout": "22.258052 VESTS"
    }
  ]
}
2018/08/30 11:54:45
voterskt1
authorziqon
permlinkjob-ssul-series-1-ep6-sql-injection
weight10000 (100.00%)
Transaction InfoBlock #25520209/Trx ce04ac4220405448363c61acc2f59ae2ef12b709
View Raw JSON Data
{
  "trx_id": "ce04ac4220405448363c61acc2f59ae2ef12b709",
  "block": 25520209,
  "trx_in_block": 30,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-30T11:54:45",
  "op": [
    "vote",
    {
      "voter": "skt1",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep6-sql-injection",
      "weight": 10000
    }
  ]
}
2018/08/30 10:22:12
voterthetroublenotes
authorziqon
permlinkjob-ssul-series-1-ep6-sql-injection
weight150 (1.50%)
Transaction InfoBlock #25518359/Trx a523ae60fe3b51f92c5c5fb3c64d7646434e38f4
View Raw JSON Data
{
  "trx_id": "a523ae60fe3b51f92c5c5fb3c64d7646434e38f4",
  "block": 25518359,
  "trx_in_block": 12,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-30T10:22:12",
  "op": [
    "vote",
    {
      "voter": "thetroublenotes",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep6-sql-injection",
      "weight": 150
    }
  ]
}
2018/08/30 10:08:54
voterheterodox
authorziqon
permlinkjob-ssul-series-1-ep6-sql-injection
weight10000 (100.00%)
Transaction InfoBlock #25518093/Trx 7179bf3f11ec98331732af230c3f2151b7a2a59d
View Raw JSON Data
{
  "trx_id": "7179bf3f11ec98331732af230c3f2151b7a2a59d",
  "block": 25518093,
  "trx_in_block": 11,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-30T10:08:54",
  "op": [
    "vote",
    {
      "voter": "heterodox",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep6-sql-injection",
      "weight": 10000
    }
  ]
}
2018/08/30 10:08:51
voterziqon
authorziqon
permlinkjob-ssul-series-1-ep6-sql-injection
weight10000 (100.00%)
Transaction InfoBlock #25518092/Trx 25a418004edcbdd27dbb391b2e5b089a760b1d1f
View Raw JSON Data
{
  "trx_id": "25a418004edcbdd27dbb391b2e5b089a760b1d1f",
  "block": 25518092,
  "trx_in_block": 18,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-30T10:08:51",
  "op": [
    "vote",
    {
      "voter": "ziqon",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep6-sql-injection",
      "weight": 10000
    }
  ]
}
2018/08/30 10:04:12
parent author
parent permlinksteemit
authorziqon
permlinkjob-ssul-series-1-ep6-sql-injection
titleJob SSul Series 1 : 해킹 방어 실습 - EP6 SQL Injection
body안녕하세요. 해킹과 방어 시리즈를 연재하고 있는 Ziqon입니다. 이제 그 첫번째 공격과 방어를 해보겠습니다. 해킹의 꽃이라 불리우는 SQL Injection! 많이들 들어보았을 것입니다. 실제로 주변의 큰 보안 사고가 발생하는 공격 방식이기도 합니다. 그럼 실습을 해볼까요? - victim 서버 구동 ![](https://cdn.steemitimages.com/DQmWoUMYXMfv52NnFBhzatzKj6vqgXSLxR2uuPvybdvQWgR/image.png) - SQL Injection 페이지로 이동 ![](https://cdn.steemitimages.com/DQmXD5gYY95K4XybzJ2B3Z1eDMXvA2w2kon6hv9jQejVJ1h/image.png) - 공격 구문 수행 ![](https://cdn.steemitimages.com/DQmebcerjnSV27Xr1GD9gV3b35cMzvVC2rmfjf7TCpVWncg/image.png) : 1=1 앞쪽에 싱글쿼터가 없어 조회가 안됨 -> String 형태로 변환해야 함 ![](https://cdn.steemitimages.com/DQmdqkJUggTgUHiGjUW1caxaER8C7U8h16t9VeXNt34Zue8/image.png) :각각 1을 개별 문자열이라고 가정하고 각각 싱글쿼터를 입력하여 공격하면 쿼리가 성공 간단하게 SQL Injection공격을 해보았습니다. 이번엔 이 공격을 방어하기 위한 방어코드를 실습해보겠습니다. - Find Bugs의 SQL인젝션 탐지 룰 ![](https://cdn.steemitimages.com/DQmNbiCgWjzPGMdJ4Jsb5SLSML8keL6tarTWmvgY1tNKdqm/image.png) - 코드 스캐닝 수행 ![](https://cdn.steemitimages.com/DQmQ4fGmLw2yBXaRFnYJ1F6fGkQsJzajsrEgzmKWa73q12k/image.png) - 취약점 리스트 확인 ![](https://cdn.steemitimages.com/DQmRYv5hpNLEZ7phCckh77grUYgqjG8np8HDdSismd8WiPS/image.png) - 취약 코드 선택 ![](https://cdn.steemitimages.com/DQmYnZ437M5JaLVdybFLr9q5fXHjZgsZgjJ2ThCwXVXUdkR/image.png) - 취약 코드 확인 ![](https://cdn.steemitimages.com/DQmUcJgr83xsB9PHMTe6cPLQE8HtkugJECD4pkeNFGBjdMd/image.png) 탐지된 라인은 보통 SQL문이 실행되는 곳이고 추적해보면 query = "SELECT ~~ "와 연결됨을 알 수 있습니다. ![](https://cdn.steemitimages.com/DQmcgCcVhfbKVN1kopX3NS6tLVyeZ9DfYdVNxhkrd9YtnG8/image.png) 외부입력값이 직접 삽입된 전형적인 SQL Injection이며 이를 statement 방식이라 하고 이를 조치하기 위해서는 Preparedstatement방식으로 변경하면 됩니다. ![](https://cdn.steemitimages.com/DQmV7gd1PqXLSgo94TtK8Hd3N9KRJMn13QDC62HPWPhb4hd/image.png) PreparedStatement는 Statement와는 다르게 직접적으로 변수를 지정하지 않고, ?로 표시하는 바인드 변수 형태로 사용합니다. 입력값은 SetXX형태로 설정하여 입력을 처리하기 때문에 쿼리 구조가 사전 컴파일되어 외부의 악의적인 입력에도 쿼리구조는 변경되지 않아 안전합니다. 수정을 완료하면 저장하고 탐켓을 재시작합니다. ![](https://cdn.steemitimages.com/DQmbpxS4uASVVideaDXdmsvzG8UnTghqZwuv9TjVkPLqENg/image.png) 같은 페이지에 들어가 다시 Injection공격을 하면 실패하는 것을 확인할 수 있습니다.
json metadata{"tags":["steemit","kr","security","education"],"image":["https://cdn.steemitimages.com/DQmWoUMYXMfv52NnFBhzatzKj6vqgXSLxR2uuPvybdvQWgR/image.png","https://cdn.steemitimages.com/DQmXD5gYY95K4XybzJ2B3Z1eDMXvA2w2kon6hv9jQejVJ1h/image.png","https://cdn.steemitimages.com/DQmebcerjnSV27Xr1GD9gV3b35cMzvVC2rmfjf7TCpVWncg/image.png","https://cdn.steemitimages.com/DQmdqkJUggTgUHiGjUW1caxaER8C7U8h16t9VeXNt34Zue8/image.png","https://cdn.steemitimages.com/DQmNbiCgWjzPGMdJ4Jsb5SLSML8keL6tarTWmvgY1tNKdqm/image.png","https://cdn.steemitimages.com/DQmQ4fGmLw2yBXaRFnYJ1F6fGkQsJzajsrEgzmKWa73q12k/image.png","https://cdn.steemitimages.com/DQmRYv5hpNLEZ7phCckh77grUYgqjG8np8HDdSismd8WiPS/image.png","https://cdn.steemitimages.com/DQmYnZ437M5JaLVdybFLr9q5fXHjZgsZgjJ2ThCwXVXUdkR/image.png","https://cdn.steemitimages.com/DQmUcJgr83xsB9PHMTe6cPLQE8HtkugJECD4pkeNFGBjdMd/image.png","https://cdn.steemitimages.com/DQmcgCcVhfbKVN1kopX3NS6tLVyeZ9DfYdVNxhkrd9YtnG8/image.png","https://cdn.steemitimages.com/DQmV7gd1PqXLSgo94TtK8Hd3N9KRJMn13QDC62HPWPhb4hd/image.png","https://cdn.steemitimages.com/DQmbpxS4uASVVideaDXdmsvzG8UnTghqZwuv9TjVkPLqENg/image.png"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #25517999/Trx 2be9312b5e4d6fbb0e1cfe2f5b785c94532d13fd
View Raw JSON Data
{
  "trx_id": "2be9312b5e4d6fbb0e1cfe2f5b785c94532d13fd",
  "block": 25517999,
  "trx_in_block": 8,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-30T10:04:12",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "steemit",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep6-sql-injection",
      "title": "Job SSul Series 1 : 해킹 방어 실습 - EP6 SQL Injection",
      "body": "안녕하세요. \n해킹과 방어 시리즈를 연재하고 있는 Ziqon입니다.\n이제 그 첫번째 공격과 방어를 해보겠습니다.\n해킹의 꽃이라 불리우는 SQL Injection! 많이들 들어보았을 것입니다.\n실제로 주변의 큰 보안 사고가 발생하는 공격 방식이기도 합니다.\n그럼 실습을 해볼까요?\n- victim 서버 구동\n![](https://cdn.steemitimages.com/DQmWoUMYXMfv52NnFBhzatzKj6vqgXSLxR2uuPvybdvQWgR/image.png)\n\n- SQL Injection 페이지로 이동\n![](https://cdn.steemitimages.com/DQmXD5gYY95K4XybzJ2B3Z1eDMXvA2w2kon6hv9jQejVJ1h/image.png)\n\n- 공격 구문 수행\n![](https://cdn.steemitimages.com/DQmebcerjnSV27Xr1GD9gV3b35cMzvVC2rmfjf7TCpVWncg/image.png)\n: 1=1 앞쪽에 싱글쿼터가  없어 조회가 안됨 -> String 형태로 변환해야 함\n\n![](https://cdn.steemitimages.com/DQmdqkJUggTgUHiGjUW1caxaER8C7U8h16t9VeXNt34Zue8/image.png)\n:각각 1을 개별 문자열이라고 가정하고 각각 싱글쿼터를 입력하여 공격하면 쿼리가 성공\n\n간단하게 SQL Injection공격을 해보았습니다.\n이번엔 이 공격을 방어하기 위한 방어코드를 실습해보겠습니다.\n\n- Find Bugs의 SQL인젝션 탐지 룰\n![](https://cdn.steemitimages.com/DQmNbiCgWjzPGMdJ4Jsb5SLSML8keL6tarTWmvgY1tNKdqm/image.png)\n\n- 코드 스캐닝 수행\n![](https://cdn.steemitimages.com/DQmQ4fGmLw2yBXaRFnYJ1F6fGkQsJzajsrEgzmKWa73q12k/image.png)\n\n- 취약점 리스트 확인\n![](https://cdn.steemitimages.com/DQmRYv5hpNLEZ7phCckh77grUYgqjG8np8HDdSismd8WiPS/image.png)\n\n- 취약 코드 선택\n![](https://cdn.steemitimages.com/DQmYnZ437M5JaLVdybFLr9q5fXHjZgsZgjJ2ThCwXVXUdkR/image.png)\n\n- 취약 코드 확인\n![](https://cdn.steemitimages.com/DQmUcJgr83xsB9PHMTe6cPLQE8HtkugJECD4pkeNFGBjdMd/image.png)\n탐지된 라인은 보통 SQL문이 실행되는 곳이고 추적해보면 query = \"SELECT ~~ \"와 연결됨을 알 수 있습니다.\n\n![](https://cdn.steemitimages.com/DQmcgCcVhfbKVN1kopX3NS6tLVyeZ9DfYdVNxhkrd9YtnG8/image.png)\n외부입력값이 직접 삽입된 전형적인 SQL Injection이며 이를 statement 방식이라 하고 이를 조치하기 위해서는 Preparedstatement방식으로 변경하면 됩니다.\n\n![](https://cdn.steemitimages.com/DQmV7gd1PqXLSgo94TtK8Hd3N9KRJMn13QDC62HPWPhb4hd/image.png)\nPreparedStatement는 Statement와는 다르게 직접적으로 변수를 지정하지 않고, ?로 표시하는 바인드 변수 형태로 사용합니다. 입력값은 SetXX형태로 설정하여 입력을 처리하기 때문에 쿼리 구조가 사전 컴파일되어 외부의 악의적인 입력에도 쿼리구조는 변경되지 않아 안전합니다.\n\n수정을 완료하면 저장하고 탐켓을 재시작합니다.\n\n![](https://cdn.steemitimages.com/DQmbpxS4uASVVideaDXdmsvzG8UnTghqZwuv9TjVkPLqENg/image.png)\n같은 페이지에 들어가 다시 Injection공격을 하면 실패하는 것을 확인할 수 있습니다.",
      "json_metadata": "{\"tags\":[\"steemit\",\"kr\",\"security\",\"education\"],\"image\":[\"https://cdn.steemitimages.com/DQmWoUMYXMfv52NnFBhzatzKj6vqgXSLxR2uuPvybdvQWgR/image.png\",\"https://cdn.steemitimages.com/DQmXD5gYY95K4XybzJ2B3Z1eDMXvA2w2kon6hv9jQejVJ1h/image.png\",\"https://cdn.steemitimages.com/DQmebcerjnSV27Xr1GD9gV3b35cMzvVC2rmfjf7TCpVWncg/image.png\",\"https://cdn.steemitimages.com/DQmdqkJUggTgUHiGjUW1caxaER8C7U8h16t9VeXNt34Zue8/image.png\",\"https://cdn.steemitimages.com/DQmNbiCgWjzPGMdJ4Jsb5SLSML8keL6tarTWmvgY1tNKdqm/image.png\",\"https://cdn.steemitimages.com/DQmQ4fGmLw2yBXaRFnYJ1F6fGkQsJzajsrEgzmKWa73q12k/image.png\",\"https://cdn.steemitimages.com/DQmRYv5hpNLEZ7phCckh77grUYgqjG8np8HDdSismd8WiPS/image.png\",\"https://cdn.steemitimages.com/DQmYnZ437M5JaLVdybFLr9q5fXHjZgsZgjJ2ThCwXVXUdkR/image.png\",\"https://cdn.steemitimages.com/DQmUcJgr83xsB9PHMTe6cPLQE8HtkugJECD4pkeNFGBjdMd/image.png\",\"https://cdn.steemitimages.com/DQmcgCcVhfbKVN1kopX3NS6tLVyeZ9DfYdVNxhkrd9YtnG8/image.png\",\"https://cdn.steemitimages.com/DQmV7gd1PqXLSgo94TtK8Hd3N9KRJMn13QDC62HPWPhb4hd/image.png\",\"https://cdn.steemitimages.com/DQmbpxS4uASVVideaDXdmsvzG8UnTghqZwuv9TjVkPLqENg/image.png\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
2018/08/24 09:49:33
voterziqon
authorziqon
permlinkjob-ssul-series-1-ep5
weight10000 (100.00%)
Transaction InfoBlock #25345007/Trx 99a5af228bd950ec130bb21b2ac18e7e1aaca447
View Raw JSON Data
{
  "trx_id": "99a5af228bd950ec130bb21b2ac18e7e1aaca447",
  "block": 25345007,
  "trx_in_block": 9,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-24T09:49:33",
  "op": [
    "vote",
    {
      "voter": "ziqon",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep5",
      "weight": 10000
    }
  ]
}
2018/08/24 08:58:51
parent authorziqon
parent permlink2rdoam
authorlovey42
permlinkre-ziqon-2rdoam-20180824t085851580z
title
body좋은말씀 감사합니다.. ^^
json metadata{"tags":["steemit"],"app":"steemit/0.1"}
Transaction InfoBlock #25343994/Trx ae79d08a4b3d8fe4004ac43a5d45582f91ba50db
View Raw JSON Data
{
  "trx_id": "ae79d08a4b3d8fe4004ac43a5d45582f91ba50db",
  "block": 25343994,
  "trx_in_block": 19,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-24T08:58:51",
  "op": [
    "comment",
    {
      "parent_author": "ziqon",
      "parent_permlink": "2rdoam",
      "author": "lovey42",
      "permlink": "re-ziqon-2rdoam-20180824t085851580z",
      "title": "",
      "body": "좋은말씀 감사합니다.. ^^",
      "json_metadata": "{\"tags\":[\"steemit\"],\"app\":\"steemit/0.1\"}"
    }
  ]
}
2018/08/24 08:52:27
parent authorziqon
parent permlink2rdoam
authorparkname
permlinkre-ziqon-2rdoam-20180824t085223409z
title
body방갑습니다. 팔로하고 갑니다
json metadata{"community":"busy","app":"busy/2.5.6","format":"markdown","tags":["steemit"],"users":[],"links":[],"image":[]}
Transaction InfoBlock #25343866/Trx 5d5567e4e55082bfbb240cc21eb94a71e1676bae
View Raw JSON Data
{
  "trx_id": "5d5567e4e55082bfbb240cc21eb94a71e1676bae",
  "block": 25343866,
  "trx_in_block": 21,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-24T08:52:27",
  "op": [
    "comment",
    {
      "parent_author": "ziqon",
      "parent_permlink": "2rdoam",
      "author": "parkname",
      "permlink": "re-ziqon-2rdoam-20180824t085223409z",
      "title": "",
      "body": "방갑습니다. 팔로하고 갑니다",
      "json_metadata": "{\"community\":\"busy\",\"app\":\"busy/2.5.6\",\"format\":\"markdown\",\"tags\":[\"steemit\"],\"users\":[],\"links\":[],\"image\":[]}"
    }
  ]
}
parknameupvoted (25.00%) @ziqon / 2rdoam
2018/08/24 08:51:57
voterparkname
authorziqon
permlink2rdoam
weight2500 (25.00%)
Transaction InfoBlock #25343856/Trx 2a7f1a8654d35c6d0a88d74125d05a81aea6ede1
View Raw JSON Data
{
  "trx_id": "2a7f1a8654d35c6d0a88d74125d05a81aea6ede1",
  "block": 25343856,
  "trx_in_block": 27,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-24T08:51:57",
  "op": [
    "vote",
    {
      "voter": "parkname",
      "author": "ziqon",
      "permlink": "2rdoam",
      "weight": 2500
    }
  ]
}
steemitagupvoted (10.00%) @ziqon / 2rdoam
2018/08/24 08:41:36
votersteemitag
authorziqon
permlink2rdoam
weight1000 (10.00%)
Transaction InfoBlock #25343649/Trx e45927e40b7a5893e2789fc9179ef75b357760c6
View Raw JSON Data
{
  "trx_id": "e45927e40b7a5893e2789fc9179ef75b357760c6",
  "block": 25343649,
  "trx_in_block": 4,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-24T08:41:36",
  "op": [
    "vote",
    {
      "voter": "steemitag",
      "author": "ziqon",
      "permlink": "2rdoam",
      "weight": 1000
    }
  ]
}
ziqonupvoted (100.00%) @ziqon / 2rdoam
2018/08/24 08:14:51
voterziqon
authorziqon
permlink2rdoam
weight10000 (100.00%)
Transaction InfoBlock #25343115/Trx c31b89790ea92263046f268314a1e2fc74406bdd
View Raw JSON Data
{
  "trx_id": "c31b89790ea92263046f268314a1e2fc74406bdd",
  "block": 25343115,
  "trx_in_block": 24,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-24T08:14:51",
  "op": [
    "vote",
    {
      "voter": "ziqon",
      "author": "ziqon",
      "permlink": "2rdoam",
      "weight": 10000
    }
  ]
}
ax3upvoted (1.00%) @ziqon / 2rdoam
2018/08/24 08:12:30
voterax3
authorziqon
permlink2rdoam
weight100 (1.00%)
Transaction InfoBlock #25343068/Trx b275847fdd555a5e053fdcfb77d23ce66746cad2
View Raw JSON Data
{
  "trx_id": "b275847fdd555a5e053fdcfb77d23ce66746cad2",
  "block": 25343068,
  "trx_in_block": 23,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-24T08:12:30",
  "op": [
    "vote",
    {
      "voter": "ax3",
      "author": "ziqon",
      "permlink": "2rdoam",
      "weight": 100
    }
  ]
}
ziqonpublished a new post: 2rdoam
2018/08/24 08:12:15
parent author
parent permlinksteemit
authorziqon
permlink2rdoam
title지금 여기!!
body![20180824_170715.jpg](https://cdn.steemitimages.com/DQmcS4z9rvZ5rayWLn4yiEw7QLrF9Yzoudxg7RZPrrRYamZ/20180824_170715.jpg) 그 어떤 걱정과 근심도 존재의 가치를 능가할 수 없습니다. 지금 여기에 나라는 존재와 가치를 흠뻑느끼시고 즐기시는 우라 스티미언되어요~~^^ ![20180824_170652_HDR.jpg](https://cdn.steemitimages.com/DQmV2KjWgbmsN2ffGsiCBBUTXwtT4Z41nEXS3tKYKKyGQS7/20180824_170652_HDR.jpg)
json metadata{"tags":["steemit","kr","life"],"image":["https://cdn.steemitimages.com/DQmcS4z9rvZ5rayWLn4yiEw7QLrF9Yzoudxg7RZPrrRYamZ/20180824_170715.jpg","https://cdn.steemitimages.com/DQmV2KjWgbmsN2ffGsiCBBUTXwtT4Z41nEXS3tKYKKyGQS7/20180824_170652_HDR.jpg"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #25343063/Trx b6dd70c02badc2cdab2f364ada2724d030d3f903
View Raw JSON Data
{
  "trx_id": "b6dd70c02badc2cdab2f364ada2724d030d3f903",
  "block": 25343063,
  "trx_in_block": 19,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-24T08:12:15",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "steemit",
      "author": "ziqon",
      "permlink": "2rdoam",
      "title": "지금 여기!!",
      "body": "![20180824_170715.jpg](https://cdn.steemitimages.com/DQmcS4z9rvZ5rayWLn4yiEw7QLrF9Yzoudxg7RZPrrRYamZ/20180824_170715.jpg)\n\n그 어떤 걱정과 근심도 존재의 가치를 능가할 수 없습니다.\n\n지금 여기에 나라는 존재와 가치를 흠뻑느끼시고 즐기시는  우라 스티미언되어요~~^^\n\n![20180824_170652_HDR.jpg](https://cdn.steemitimages.com/DQmV2KjWgbmsN2ffGsiCBBUTXwtT4Z41nEXS3tKYKKyGQS7/20180824_170652_HDR.jpg)",
      "json_metadata": "{\"tags\":[\"steemit\",\"kr\",\"life\"],\"image\":[\"https://cdn.steemitimages.com/DQmcS4z9rvZ5rayWLn4yiEw7QLrF9Yzoudxg7RZPrrRYamZ/20180824_170715.jpg\",\"https://cdn.steemitimages.com/DQmV2KjWgbmsN2ffGsiCBBUTXwtT4Z41nEXS3tKYKKyGQS7/20180824_170652_HDR.jpg\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
ziqonreceived 0.012 STEEM, 0.015 SP author reward for @ziqon / job-ssul-series-1-ep5
2018/08/16 09:41:15
authorziqon
permlinkjob-ssul-series-1-ep5
sbd payout0.000 SBD
steem payout0.012 STEEM
vesting payout24.301063 VESTS
Transaction InfoBlock #25114527/Virtual Operation #5
View Raw JSON Data
{
  "trx_id": "0000000000000000000000000000000000000000",
  "block": 25114527,
  "trx_in_block": 4294967295,
  "op_in_trx": 0,
  "virtual_op": 5,
  "timestamp": "2018-08-16T09:41:15",
  "op": [
    "author_reward",
    {
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep5",
      "sbd_payout": "0.000 SBD",
      "steem_payout": "0.012 STEEM",
      "vesting_payout": "24.301063 VESTS"
    }
  ]
}
ziqonreceived 0.016 STEEM, 0.021 SP author reward for @ziqon / job-ssul-series-1-ep4
2018/08/15 08:49:00
authorziqon
permlinkjob-ssul-series-1-ep4
sbd payout0.000 SBD
steem payout0.016 STEEM
vesting payout34.428432 VESTS
Transaction InfoBlock #25084690/Virtual Operation #3
View Raw JSON Data
{
  "trx_id": "0000000000000000000000000000000000000000",
  "block": 25084690,
  "trx_in_block": 4294967295,
  "op_in_trx": 0,
  "virtual_op": 3,
  "timestamp": "2018-08-15T08:49:00",
  "op": [
    "author_reward",
    {
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep4",
      "sbd_payout": "0.000 SBD",
      "steem_payout": "0.016 STEEM",
      "vesting_payout": "34.428432 VESTS"
    }
  ]
}
ziqonupvoted (100.00%) @ziqon / 4w6c5v
2018/08/10 01:44:33
voterziqon
authorziqon
permlink4w6c5v
weight10000 (100.00%)
Transaction InfoBlock #24932250/Trx a4e59390e2b0f7a953e9b3aec569b475ac8ecac3
View Raw JSON Data
{
  "trx_id": "a4e59390e2b0f7a953e9b3aec569b475ac8ecac3",
  "block": 24932250,
  "trx_in_block": 30,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-10T01:44:33",
  "op": [
    "vote",
    {
      "voter": "ziqon",
      "author": "ziqon",
      "permlink": "4w6c5v",
      "weight": 10000
    }
  ]
}
2018/08/10 00:25:42
parent authorziqon
parent permlink4w6c5v
authorjyinvest
permlinkre-ziqon-4w6c5v-20180810t002539262z
title
body잘 봤습니다. @ziqon님
json metadata{"tags":["steemit"],"users":["ziqon"],"app":"steemit/0.1"}
Transaction InfoBlock #24930673/Trx 6f1d22b11e86f8a49a9ad0860b7d324af69bb71a
View Raw JSON Data
{
  "trx_id": "6f1d22b11e86f8a49a9ad0860b7d324af69bb71a",
  "block": 24930673,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-10T00:25:42",
  "op": [
    "comment",
    {
      "parent_author": "ziqon",
      "parent_permlink": "4w6c5v",
      "author": "jyinvest",
      "permlink": "re-ziqon-4w6c5v-20180810t002539262z",
      "title": "",
      "body": "잘 봤습니다. @ziqon님",
      "json_metadata": "{\"tags\":[\"steemit\"],\"users\":[\"ziqon\"],\"app\":\"steemit/0.1\"}"
    }
  ]
}
ziqonpublished a new post: 4w6c5v
2018/08/09 23:51:30
parent author
parent permlinksteemit
authorziqon
permlink4w6c5v
title암호화폐 혁명
body우리 시대에 혁명은 가능할까? 혁명이 일어난다면 우린 그 혁명에 내가 참여할 수 있을까 하는 고민들을 살아오면서 많이 했던 것 같습니다. 5G다, AI다, 블록체인이다, IoT다 4차 산업 혁명의 물결이라는 미명하에 우리는 생각하고 움직이고 있습니다. 이것들은 마치 우리시대의 혁명인 것처럼 느껴집니다. ![evolution.jpg](https://cdn.steemitimages.com/DQmU2Kz4ZVnnpJQCKULutmW1DR3uyhUcC55Qrc2Mk7PVm7C/evolution.jpg) 작년에 붐이 일었던 암호화폐 혁명에 대해서 이야기해보고자 합니다. 뭐 사람마다 다른 견해를 가지고 있겠지만 저는 이 암호화폐 혁명에 크게 1차, 2차가 있었다고 봅니다. 1차 혁명은 분산원장이라는 기술을 필두로 현재 암호화폐의 대표인 비트코인의 등장입니다. 그 이후로 비트코인의 소스코드를 일부 수정하여 만든 몇몇 암호화폐들이 생겨났지만 효용성 측면에서 비트코인의 굴레를 벗어나지 못했다고 봅니다. 2차 혁명은 스마트컨트랙트라는 기술을 필두로 등장한 이더리움입니다. 바로 작년 붐의 주역이기도 합니다. 이더리움은 특히 dApp을 구성할 수 있는 환경과 다른 암호화폐와 호환될 수 있는 ERC20프로토콜을 제공합니다. 이더리움의 등장으로 알트코인 개발이 호황을 맞이하게 되며 또한 많은 부작용을 낳게 됩니다. 이더리움이 제시한 청사진은 사람들에게 많은 상상력을 부여해주었습니다. 각 산업별로 실물과 거래를 연결시켜주었고 실제로 그렇게 많은 작업들이 이루어지고 있습니다. 3차 혁명을 많은 사람들이 이미 이루어진 것으로 보고 있습니다. 그 대표적인 것이 이오스인데.. 저는 이오스가 이더리움 등장과 같은 커다란 파급력을 가지고 있지 않다고 봅니다. 그저 이더리움 사상의 자식일 뿐이지요. 실제 3차 혁명이 발생한다면 이보다 더 큰 웨이브가 발생할 것입니다. 모든 사람들이 블록체인을 인터넷 하듯이 손쉽게 접근할 수 있어야 합니다. 그리고 간결하면서도 명확하게 비즈니스 모델을 정의할 수 있어야 합니다. 그 기술이 무엇이 되었든 우리가 경험했던 1차 2차 혁명보다 더 큰 사회적 반향을 일으킬 것입니다. 올해 암호화폐 가격 하락으로 많은 투자자들은 세력에 의해 조종되는 시장이라고 생각합니다. 그리고 그 세력이 현재 설겆이를 한다고 생각하죠. 하지만 이걸 단순히 누군가의 의도로 만들어진 것이라기보다는 사회 현상이라고 보는 것이 맞다고 봅니다. 그래서 암호화폐의 투자 방향성은 잘 정해야 합니다. 단순히 가격이 많이 싸졌다고 사는 것은 쓰레기에 투자하는 것과 마찮가지입니다. 무작정 존버하는 것도 마찮가지이지요. 곧 다가올 3차 혁명을 이끌어낼 암호화폐의 사상을 발굴하고 투자하시길 바랍니다.
json metadata{"tags":["steemit","kr","bitcoin"],"image":["https://cdn.steemitimages.com/DQmU2Kz4ZVnnpJQCKULutmW1DR3uyhUcC55Qrc2Mk7PVm7C/evolution.jpg"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #24929989/Trx c78c19a0c5e7ff93bc7adad71d5641f2dd0f67e0
View Raw JSON Data
{
  "trx_id": "c78c19a0c5e7ff93bc7adad71d5641f2dd0f67e0",
  "block": 24929989,
  "trx_in_block": 5,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-09T23:51:30",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "steemit",
      "author": "ziqon",
      "permlink": "4w6c5v",
      "title": "암호화폐 혁명",
      "body": "우리 시대에 혁명은 가능할까? 혁명이 일어난다면 우린 그 혁명에 내가 참여할 수 있을까 하는 고민들을 살아오면서 많이 했던 것 같습니다.\n5G다, AI다, 블록체인이다, IoT다 4차 산업 혁명의 물결이라는 미명하에 우리는 생각하고 움직이고 있습니다. 이것들은 마치 우리시대의 혁명인 것처럼 느껴집니다.\n\n![evolution.jpg](https://cdn.steemitimages.com/DQmU2Kz4ZVnnpJQCKULutmW1DR3uyhUcC55Qrc2Mk7PVm7C/evolution.jpg)\n\n작년에 붐이 일었던 암호화폐 혁명에 대해서 이야기해보고자 합니다.\n뭐 사람마다 다른 견해를 가지고 있겠지만 저는 이 암호화폐 혁명에 크게 1차, 2차가 있었다고 봅니다.\n\n1차 혁명은 분산원장이라는 기술을 필두로 현재 암호화폐의 대표인 비트코인의 등장입니다.\n그 이후로 비트코인의 소스코드를 일부 수정하여 만든 몇몇 암호화폐들이 생겨났지만 효용성 측면에서 비트코인의 굴레를 벗어나지 못했다고 봅니다.\n\n2차 혁명은 스마트컨트랙트라는 기술을 필두로 등장한 이더리움입니다. 바로 작년 붐의 주역이기도 합니다.\n이더리움은 특히 dApp을 구성할 수 있는 환경과 다른 암호화폐와 호환될 수 있는 ERC20프로토콜을 제공합니다.\n이더리움의 등장으로 알트코인 개발이 호황을 맞이하게 되며 또한 많은 부작용을 낳게 됩니다.\n이더리움이 제시한 청사진은 사람들에게 많은 상상력을 부여해주었습니다.\n각 산업별로 실물과 거래를 연결시켜주었고 실제로 그렇게 많은 작업들이 이루어지고 있습니다.\n\n3차 혁명을 많은 사람들이 이미 이루어진 것으로 보고 있습니다.\n그 대표적인 것이 이오스인데.. 저는 이오스가 이더리움 등장과 같은 커다란 파급력을 가지고 있지 않다고 봅니다. 그저 이더리움 사상의 자식일 뿐이지요.\n실제 3차 혁명이 발생한다면 이보다 더 큰 웨이브가 발생할 것입니다. 모든 사람들이 블록체인을 인터넷 하듯이 손쉽게 접근할 수 있어야 합니다. 그리고 간결하면서도 명확하게 비즈니스 모델을 정의할 수 있어야 합니다. 그 기술이 무엇이 되었든 우리가 경험했던 1차 2차 혁명보다 더 큰 사회적 반향을 일으킬 것입니다.\n\n올해 암호화폐 가격 하락으로 많은 투자자들은 세력에 의해 조종되는 시장이라고 생각합니다.\n그리고 그 세력이 현재 설겆이를 한다고 생각하죠.\n하지만 이걸 단순히 누군가의 의도로 만들어진 것이라기보다는 사회 현상이라고 보는 것이 맞다고 봅니다.\n그래서 암호화폐의 투자 방향성은 잘 정해야 합니다.\n단순히 가격이 많이 싸졌다고 사는 것은 쓰레기에 투자하는 것과 마찮가지입니다.\n무작정 존버하는 것도 마찮가지이지요.\n곧 다가올 3차 혁명을 이끌어낼 암호화폐의 사상을 발굴하고 투자하시길 바랍니다.",
      "json_metadata": "{\"tags\":[\"steemit\",\"kr\",\"bitcoin\"],\"image\":[\"https://cdn.steemitimages.com/DQmU2Kz4ZVnnpJQCKULutmW1DR3uyhUcC55Qrc2Mk7PVm7C/evolution.jpg\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
2018/08/09 10:27:06
parent authorziqon
parent permlinkjob-ssul-series-1-ep5
authorssasseo
permlinkre-ziqon-job-ssul-series-1-ep5-20180809t102704844z
title
body오 웹해킹 ㅎㅎ 다음글도 기대하겠습니다!
json metadata{"tags":["steemit"],"app":"steemit/0.1"}
Transaction InfoBlock #24913905/Trx 7cf22c1d68bd40797c00433857e4a4b5a96d8251
View Raw JSON Data
{
  "trx_id": "7cf22c1d68bd40797c00433857e4a4b5a96d8251",
  "block": 24913905,
  "trx_in_block": 37,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-09T10:27:06",
  "op": [
    "comment",
    {
      "parent_author": "ziqon",
      "parent_permlink": "job-ssul-series-1-ep5",
      "author": "ssasseo",
      "permlink": "re-ziqon-job-ssul-series-1-ep5-20180809t102704844z",
      "title": "",
      "body": "오 웹해킹 ㅎㅎ 다음글도 기대하겠습니다!",
      "json_metadata": "{\"tags\":[\"steemit\"],\"app\":\"steemit/0.1\"}"
    }
  ]
}
2018/08/09 10:26:42
voterssasseo
authorziqon
permlinkjob-ssul-series-1-ep5
weight10000 (100.00%)
Transaction InfoBlock #24913897/Trx d0fd260e7abaae4479b7f8092f9ff3d56a8b0779
View Raw JSON Data
{
  "trx_id": "d0fd260e7abaae4479b7f8092f9ff3d56a8b0779",
  "block": 24913897,
  "trx_in_block": 22,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-09T10:26:42",
  "op": [
    "vote",
    {
      "voter": "ssasseo",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep5",
      "weight": 10000
    }
  ]
}
ziqonpublished a new post: job-ssul-series-1-ep5
2018/08/09 09:41:15
parent author
parent permlinksteemit
authorziqon
permlinkjob-ssul-series-1-ep5
titleJob SSul Series 1 : 해킹 방어 실습 - EP5 정보 수집
body안녕하세요. 지난 에피소드에서 웹의 기본 구조를 이해하고 그 구조에서 어떤 공격들이 있는지 살펴보았습니다. 이번 에피소드부터는 지난번 셋팅한 Webgoat를 공격해보고 공격을 이해하여 방어 로직을 구성해보도록 하겠습니다. 먼저 해커의 입장에서 타겟이 되는 시스템은 잘 알지 못하는 시스템입니다. 그렇기 때문에 맨 처음 하는 행위는 정보 수집입니다. ![](https://cdn.steemitimages.com/DQmbXH7AAqjvxMU6J2DHSSAzf768ear7WkrLL7TDN4QhpWi/image.png) [ 풋 프린팅] 공격 대상의 기본적인 정보를 수집하는 것을 말합니다. 획득 가능한 정보 (1) 네트워크 정보 수집 .도메인명, 내부 도메인명, 시스템IP목록 .웹사이트, TCP/UDP 서비스, 엑세스 리스트 (2) 시스템 정보 수집 .사용자 및 그룹명, 시스템 배너, 라우팅테이블 .시스템 구조, 시스템명, 패스워드 ( 3) 조직 정보수집 .조직 구성, 조직 내 웹 사이트, 회사 디렉토리 .조직 연락처, 조직 배경, 회사 관련 뉴스 ![](https://cdn.steemitimages.com/DQmdLwGFx28QWjc3WaRdLh7Kygie1oWZqPe63RbAGMD6LnX/image.png) [스캐닝] 정의 : 스캐닝은 네트워크를 통해 제공하고 있는 서비스, 포트, Host 정보 등을 알아내는 것을 의미합니다 (1)목적 . 열려 있는 포트 확인 . 제공하는 서비스 확인 . 동작중인 서비스 버전 . 운영체제 종류 및 버전 . 위 서비스 및 운영체제 버전에 따른 취약점(CVE) (3) Scanning에 사용하는 프로토콜 . ICMP . TCP . UDP ![](https://cdn.steemitimages.com/DQmfECjUiowe42gyrqBkNY1z4kBrpt4fhi6bH4Vn2xbZo5K/image.png) [웹 구조 분석] : 공격하고자 하는 대상의 웹 구조 또는 취약점을 분석하여, 많은 정보들을 수집/분석하고, 실제 공격단계에서 유용하게 활용할 수 있습니다 사용 툴 (1) Web Site Mirroring .HttTrack .curl .wget (2) 정적 분석 . grep, awk, sed, sort, uniq (3) Web 구조 분석 . BlackWidow . InteliTamper . Wikto . Backend hidden diretory/file scan (4) Software Proxy . Paros . Burp Intruder 여기까지 타겟 시스템에 대한 대략적인 정보 수집이 끝나면 다음 에피소드 부터는 본격적인 웹 해킹을 시작합니다.
json metadata{"tags":["steemit","kr","security","education"],"image":["https://cdn.steemitimages.com/DQmbXH7AAqjvxMU6J2DHSSAzf768ear7WkrLL7TDN4QhpWi/image.png","https://cdn.steemitimages.com/DQmdLwGFx28QWjc3WaRdLh7Kygie1oWZqPe63RbAGMD6LnX/image.png","https://cdn.steemitimages.com/DQmfECjUiowe42gyrqBkNY1z4kBrpt4fhi6bH4Vn2xbZo5K/image.png"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #24912988/Trx 47ea735b6e732daac15ad745be785fc41b041ff4
View Raw JSON Data
{
  "trx_id": "47ea735b6e732daac15ad745be785fc41b041ff4",
  "block": 24912988,
  "trx_in_block": 26,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-09T09:41:15",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "steemit",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep5",
      "title": "Job SSul Series 1 : 해킹 방어 실습 - EP5 정보 수집",
      "body": "안녕하세요.\n지난 에피소드에서 웹의 기본 구조를 이해하고 그 구조에서 어떤 공격들이 있는지 살펴보았습니다.\n이번 에피소드부터는 지난번 셋팅한 Webgoat를 공격해보고 공격을 이해하여 방어 로직을 구성해보도록 하겠습니다.\n먼저 해커의 입장에서 타겟이 되는 시스템은 잘 알지 못하는 시스템입니다.\n그렇기 때문에 맨 처음 하는 행위는 정보 수집입니다.\n\n![](https://cdn.steemitimages.com/DQmbXH7AAqjvxMU6J2DHSSAzf768ear7WkrLL7TDN4QhpWi/image.png)\n\n[ 풋 프린팅]\n 공격 대상의 기본적인 정보를 수집하는 것을 말합니다.\n\n 획득 가능한 정보\n  (1) 네트워크 정보 수집\n     .도메인명, 내부 도메인명, 시스템IP목록\n     .웹사이트, TCP/UDP 서비스, 엑세스 리스트\n\n  (2) 시스템 정보 수집\n     .사용자 및 그룹명, 시스템 배너, 라우팅테이블\n     .시스템 구조, 시스템명, 패스워드\n\n ( 3) 조직 정보수집\n     .조직 구성, 조직 내 웹 사이트, 회사 디렉토리\n     .조직 연락처, 조직 배경, 회사 관련 뉴스\n\n![](https://cdn.steemitimages.com/DQmdLwGFx28QWjc3WaRdLh7Kygie1oWZqPe63RbAGMD6LnX/image.png)\n\n[스캐닝]\n정의 : 스캐닝은 네트워크를 통해 제공하고 있는 서비스, 포트, Host 정보 등을 알아내는 것을 의미합니다\n\n (1)목적\n    . 열려 있는 포트 확인\n    . 제공하는 서비스 확인\n    . 동작중인 서비스 버전\n    . 운영체제 종류 및 버전\n    . 위 서비스 및 운영체제 버전에 따른 취약점(CVE)\n\n(3) Scanning에 사용하는 프로토콜\n    . ICMP\n    . TCP\n    . UDP\n\n![](https://cdn.steemitimages.com/DQmfECjUiowe42gyrqBkNY1z4kBrpt4fhi6bH4Vn2xbZo5K/image.png)\n\n[웹 구조 분석]\n : 공격하고자 하는 대상의 웹 구조 또는 취약점을 분석하여, 많은 정보들을  수집/분석하고, 실제 공격단계에서 유용하게 활용할 수 있습니다\n\n사용 툴\n (1) Web Site Mirroring\n   .HttTrack\n   .curl\n   .wget\n\n (2) 정적 분석\n    . grep, awk, sed, sort, uniq\n\n (3) Web 구조 분석\n    . BlackWidow\n    . InteliTamper\n    . Wikto\n    . Backend hidden diretory/file scan\n\n (4) Software Proxy\n    . Paros\n    . Burp Intruder\n\n\n여기까지 타겟 시스템에 대한 대략적인 정보 수집이 끝나면 다음 에피소드 부터는 본격적인 웹 해킹을 시작합니다.",
      "json_metadata": "{\"tags\":[\"steemit\",\"kr\",\"security\",\"education\"],\"image\":[\"https://cdn.steemitimages.com/DQmbXH7AAqjvxMU6J2DHSSAzf768ear7WkrLL7TDN4QhpWi/image.png\",\"https://cdn.steemitimages.com/DQmdLwGFx28QWjc3WaRdLh7Kygie1oWZqPe63RbAGMD6LnX/image.png\",\"https://cdn.steemitimages.com/DQmfECjUiowe42gyrqBkNY1z4kBrpt4fhi6bH4Vn2xbZo5K/image.png\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
2018/08/08 23:17:00
voterziqon
authorziqon
permlinkjob-ssul-series-1-ep4
weight10000 (100.00%)
Transaction InfoBlock #24900510/Trx 90e03ed9e0ad4a7c77d61a139de929acb2e80a00
View Raw JSON Data
{
  "trx_id": "90e03ed9e0ad4a7c77d61a139de929acb2e80a00",
  "block": 24900510,
  "trx_in_block": 24,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-08T23:17:00",
  "op": [
    "vote",
    {
      "voter": "ziqon",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep4",
      "weight": 10000
    }
  ]
}
2018/08/08 10:43:57
parent authorziqon
parent permlinkjob-ssul-series-1-ep4
authorchnak
permlink20180808t104358445z
title
bodyThis game is very fun. https://reurl.cc/9EGMj
json metadata{"tags":["hot"],"app":"foliko.com"}
Transaction InfoBlock #24885471/Trx 22dcfe94a1efc098a0debe64addb491a1eb0014b
View Raw JSON Data
{
  "trx_id": "22dcfe94a1efc098a0debe64addb491a1eb0014b",
  "block": 24885471,
  "trx_in_block": 20,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-08T10:43:57",
  "op": [
    "comment",
    {
      "parent_author": "ziqon",
      "parent_permlink": "job-ssul-series-1-ep4",
      "author": "chnak",
      "permlink": "20180808t104358445z",
      "title": "",
      "body": "This game is very fun. https://reurl.cc/9EGMj",
      "json_metadata": "{\"tags\":[\"hot\"],\"app\":\"foliko.com\"}"
    }
  ]
}
2018/08/08 09:39:42
parent authorziqon
parent permlinkjob-ssul-series-1-ep4
authorssasseo
permlinkre-ziqon-job-ssul-series-1-ep4-20180808t093939494z
title
body오 관심있는 주제이네요 ㅎㅎ 방어코딩이란것은 어떤것을 의미하는건가요?? 시큐어코딩 개념은 아닌거같은데.. 다음을 기대할께요!
json metadata{"tags":["steemit"],"app":"steemit/0.1"}
Transaction InfoBlock #24884188/Trx 11540e14d7cebb1cb1dcb7334243483c50cc72d8
View Raw JSON Data
{
  "trx_id": "11540e14d7cebb1cb1dcb7334243483c50cc72d8",
  "block": 24884188,
  "trx_in_block": 71,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-08T09:39:42",
  "op": [
    "comment",
    {
      "parent_author": "ziqon",
      "parent_permlink": "job-ssul-series-1-ep4",
      "author": "ssasseo",
      "permlink": "re-ziqon-job-ssul-series-1-ep4-20180808t093939494z",
      "title": "",
      "body": "오 관심있는 주제이네요 ㅎㅎ 방어코딩이란것은 어떤것을 의미하는건가요?? 시큐어코딩 개념은 아닌거같은데.. 다음을 기대할께요!",
      "json_metadata": "{\"tags\":[\"steemit\"],\"app\":\"steemit/0.1\"}"
    }
  ]
}
2018/08/08 09:38:30
voterssasseo
authorziqon
permlinkjob-ssul-series-1-ep4
weight10000 (100.00%)
Transaction InfoBlock #24884164/Trx 4f86c884b73c2788393b01c436e7307953bdc404
View Raw JSON Data
{
  "trx_id": "4f86c884b73c2788393b01c436e7307953bdc404",
  "block": 24884164,
  "trx_in_block": 122,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-08T09:38:30",
  "op": [
    "vote",
    {
      "voter": "ssasseo",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep4",
      "weight": 10000
    }
  ]
}
2018/08/08 09:03:12
parent authorziqon
parent permlinkjob-ssul-series-1-ep4
authorchnak
permlink20180808t090313184z
title
bodyThis kind of game is very exciting. https://goo.gl/Dd9394
json metadata{"tags":["hot"],"app":"foliko.com"}
Transaction InfoBlock #24883458/Trx 7788a2aa218fa38070b334c576c6c55f22dcaf26
View Raw JSON Data
{
  "trx_id": "7788a2aa218fa38070b334c576c6c55f22dcaf26",
  "block": 24883458,
  "trx_in_block": 20,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-08T09:03:12",
  "op": [
    "comment",
    {
      "parent_author": "ziqon",
      "parent_permlink": "job-ssul-series-1-ep4",
      "author": "chnak",
      "permlink": "20180808t090313184z",
      "title": "",
      "body": "This kind of game is very exciting. https://goo.gl/Dd9394",
      "json_metadata": "{\"tags\":[\"hot\"],\"app\":\"foliko.com\"}"
    }
  ]
}
ziqonpublished a new post: job-ssul-series-1-ep4
2018/08/08 08:49:00
parent author
parent permlinksteemit
authorziqon
permlinkjob-ssul-series-1-ep4
titleJob SSul Series 1 : 해킹 방어 실습 - EP4 웹의 기본 구성
body안녕하세요. 지난 에피소드까지는 웹 해킹 방어 실습을 위한 환경 구성을 해보았습니다. 이번 에피소드부터는 우리가 구성한 victim사이트를 여러가지 기법으로 공격하려고 하는데요. 그 전에!!! 웹의 구조를 알아야 공격하면서도 아 이 공격이 어떤 의미가 있구나 라는 것을 이해하게 될 겁니다. [웹서비스의 기본적인 구성] ![](https://cdn.steemitimages.com/DQmYo1hrcH2LsZ3gBr8hEMzGpiHKQFDK1vXckJfBJHFvhwL/image.png) 일반적인 웹 서비스의 구성은 웹 서버, 웹 어플리케이션, DB로 구성됩니다. 이 구조상에서 각 서버별로 발생 가능한 취약점 성격이 있으며 각 취약점을 틈타 해킹을 당하게 됩니다. ![](https://cdn.steemitimages.com/DQmbTVichBg6qgk9oFhSHEdnYjdeurngtUZppJpHmvdrasQ/image.png) 이 구조를 이해하고 다음 포스팅부터는 각 티어에서 공격을 수행하고 방어 코딩을 수행해보도록 하겠습니다.
json metadata{"tags":["steemit","security","education","kr"],"image":["https://cdn.steemitimages.com/DQmYo1hrcH2LsZ3gBr8hEMzGpiHKQFDK1vXckJfBJHFvhwL/image.png","https://cdn.steemitimages.com/DQmbTVichBg6qgk9oFhSHEdnYjdeurngtUZppJpHmvdrasQ/image.png"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #24883174/Trx 33da0bf09a2c878cf856159d20cb9074eae853fd
View Raw JSON Data
{
  "trx_id": "33da0bf09a2c878cf856159d20cb9074eae853fd",
  "block": 24883174,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-08T08:49:00",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "steemit",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep4",
      "title": "Job SSul Series 1 : 해킹 방어 실습 - EP4 웹의 기본 구성",
      "body": "안녕하세요.\n지난 에피소드까지는 웹 해킹 방어 실습을 위한 환경 구성을 해보았습니다.\n이번 에피소드부터는 우리가 구성한 victim사이트를 여러가지 기법으로 공격하려고 하는데요.\n그 전에!!!\n웹의 구조를 알아야 공격하면서도 아 이 공격이 어떤 의미가 있구나 라는 것을 이해하게 될 겁니다.\n\n[웹서비스의 기본적인 구성]\n![](https://cdn.steemitimages.com/DQmYo1hrcH2LsZ3gBr8hEMzGpiHKQFDK1vXckJfBJHFvhwL/image.png)\n\n일반적인 웹 서비스의 구성은 웹 서버, 웹 어플리케이션, DB로 구성됩니다.\n\n이 구조상에서 각 서버별로 발생 가능한 취약점 성격이 있으며 각 취약점을 틈타 해킹을 당하게 됩니다.\n\n![](https://cdn.steemitimages.com/DQmbTVichBg6qgk9oFhSHEdnYjdeurngtUZppJpHmvdrasQ/image.png)\n\n이 구조를 이해하고 다음 포스팅부터는 각 티어에서 공격을 수행하고 방어 코딩을 수행해보도록 하겠습니다.",
      "json_metadata": "{\"tags\":[\"steemit\",\"security\",\"education\",\"kr\"],\"image\":[\"https://cdn.steemitimages.com/DQmYo1hrcH2LsZ3gBr8hEMzGpiHKQFDK1vXckJfBJHFvhwL/image.png\",\"https://cdn.steemitimages.com/DQmbTVichBg6qgk9oFhSHEdnYjdeurngtUZppJpHmvdrasQ/image.png\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
2018/08/07 13:28:51
parent authorziqon
parent permlinkjob-ssul-series-1-ep2-victim
authorskt1
permlinkre-ziqon-job-ssul-series-1-ep2-victim-20180807t132850350z
title
body멋지십니다~!!
json metadata{"tags":["steemit"],"app":"steemit/0.1"}
Transaction InfoBlock #24859976/Trx eb622cb9104a24be0d7f241a86945148f6c20d16
View Raw JSON Data
{
  "trx_id": "eb622cb9104a24be0d7f241a86945148f6c20d16",
  "block": 24859976,
  "trx_in_block": 6,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-07T13:28:51",
  "op": [
    "comment",
    {
      "parent_author": "ziqon",
      "parent_permlink": "job-ssul-series-1-ep2-victim",
      "author": "skt1",
      "permlink": "re-ziqon-job-ssul-series-1-ep2-victim-20180807t132850350z",
      "title": "",
      "body": "멋지십니다~!!",
      "json_metadata": "{\"tags\":[\"steemit\"],\"app\":\"steemit/0.1\"}"
    }
  ]
}
2018/08/07 13:28:18
voterskt1
authorziqon
permlinkjob-ssul-series-1-ep2-victim
weight10000 (100.00%)
Transaction InfoBlock #24859965/Trx 3663ce3fab68f193c3d9752b6262b53329fa40e5
View Raw JSON Data
{
  "trx_id": "3663ce3fab68f193c3d9752b6262b53329fa40e5",
  "block": 24859965,
  "trx_in_block": 26,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-07T13:28:18",
  "op": [
    "vote",
    {
      "voter": "skt1",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep2-victim",
      "weight": 10000
    }
  ]
}
skt1upvoted (100.00%) @ziqon / job-ssul-series-1-ep3
2018/08/07 13:28:06
voterskt1
authorziqon
permlinkjob-ssul-series-1-ep3
weight10000 (100.00%)
Transaction InfoBlock #24859961/Trx c84fe6e5fd079e488186d5980c0855d6b4d2b58a
View Raw JSON Data
{
  "trx_id": "c84fe6e5fd079e488186d5980c0855d6b4d2b58a",
  "block": 24859961,
  "trx_in_block": 24,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-07T13:28:06",
  "op": [
    "vote",
    {
      "voter": "skt1",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep3",
      "weight": 10000
    }
  ]
}
2018/08/07 09:50:48
voterziqon
authorziqon
permlinkjob-ssul-series-1-ep3
weight10000 (100.00%)
Transaction InfoBlock #24855616/Trx c55e2e40b0ba38eb27181ef156940063c5a42b36
View Raw JSON Data
{
  "trx_id": "c55e2e40b0ba38eb27181ef156940063c5a42b36",
  "block": 24855616,
  "trx_in_block": 4,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-07T09:50:48",
  "op": [
    "vote",
    {
      "voter": "ziqon",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep3",
      "weight": 10000
    }
  ]
}
2018/08/07 09:17:09
parent authorjyinvest
parent permlinkre-ziqon-job-ssul-series-1-ep2-victim-20180807t084418429z
authorziqon
permlinkre-jyinvest-re-ziqon-job-ssul-series-1-ep2-victim-20180807t091657205z
title
body네 보안과 관련된 지속적인 포스팅을 하려고 합니다. 관심가져주셔서 감사해요~~^^
json metadata{"tags":["steemit"],"app":"steemit/0.1"}
Transaction InfoBlock #24854943/Trx db793d8bbab4402cc871b5816a2a17742f58ae17
View Raw JSON Data
{
  "trx_id": "db793d8bbab4402cc871b5816a2a17742f58ae17",
  "block": 24854943,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-07T09:17:09",
  "op": [
    "comment",
    {
      "parent_author": "jyinvest",
      "parent_permlink": "re-ziqon-job-ssul-series-1-ep2-victim-20180807t084418429z",
      "author": "ziqon",
      "permlink": "re-jyinvest-re-ziqon-job-ssul-series-1-ep2-victim-20180807t091657205z",
      "title": "",
      "body": "네 보안과 관련된 지속적인 포스팅을 하려고 합니다.\n관심가져주셔서 감사해요~~^^",
      "json_metadata": "{\"tags\":[\"steemit\"],\"app\":\"steemit/0.1\"}"
    }
  ]
}
2018/08/07 09:16:30
voterziqon
authorziqon
permlinkjob-ssul-series-1-ep2-victim
weight10000 (100.00%)
Transaction InfoBlock #24854930/Trx 504d1833481354bfa1c847bf60c5053e7926dc86
View Raw JSON Data
{
  "trx_id": "504d1833481354bfa1c847bf60c5053e7926dc86",
  "block": 24854930,
  "trx_in_block": 7,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-07T09:16:30",
  "op": [
    "vote",
    {
      "voter": "ziqon",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep2-victim",
      "weight": 10000
    }
  ]
}
ziqonpublished a new post: job-ssul-series-1-ep3
2018/08/07 09:15:51
parent author
parent permlinksteemit
authorziqon
permlinkjob-ssul-series-1-ep3
titleJob SSul Series 1 : 해킹 방어 실습 - EP3 시큐어코딩 점검 툴 설치
body안녕하세요. IT+정보보안을 12년간 Job으로하고 있는 저는 어떻게 공격이 들어오고 이걸 어떻게 방어해야 할 것인가에 대하여 Job SSul을 풀어보는 첫 시리즈로 어플리케이션 해킹과 방어가 어떻게 이루어지는지를 주제로 삼았습니다. 지난 포스트들에 이어 환경구성을 계속 해보겠습니다. - 소스코드 취약점 점검 툴 설치 https://steemit.com/kr/@ziqon/job-ssul-series-1-ep1 https://steemit.com/steemit/@ziqon/job-ssul-series-1-ep2-victim 소스코드 취약점 점검 툴은 아래와 같이 강력한 툴들이 많습니다. 여기서 이클립스 플러그인을 통해 쉽게 취약점을 찾을 수 있도록 공개용 툴인 Findbugs security를 설치해보도록 하겠습니다. 아래와 같이 이클립스 상에서 소프트웨어를 다운로드합니다. ![](https://cdn.steemitimages.com/DQmPtbe2piBBevQsPb4s5sQNFHnCVFE7zMpmeGhG1RJo4gz/image.png) ![](https://cdn.steemitimages.com/DQmdwSHbuyD2VESafcMKKRAH1ZTXPuSkn93tft49NWNDeFz/image.png) ![](https://cdn.steemitimages.com/DQmYShuRZ2VPda8rARWVEvzVFcFQagETgi55DeG45yULtZU/image.png) 다운로드 받은 소프트웨어가 unsign되었다는 경고팝업이 뜨면 Install Anyway버튼을 클릭합니다. ![](https://cdn.steemitimages.com/DQmWGtFCVd7Cjs3z6bAMUet2ejhBcwvN4QP93ZwWnDvoqap/image.png) 여기서 취약점 검사 기능을 추가하기 위해서는 아래 사이트로 접속하여 파일을 다운로드 받습니다. https://find-sec-bugs.github.io/ ![](https://cdn.steemitimages.com/DQmXTzFQYkHy1myrvTrXzoPQV8fzmrZfHctDcV6By82WABT/image.png) 다운로드받은 파일을 import 하기 위해서 아래 메뉴로 들어갑니다. ![](https://cdn.steemitimages.com/DQmTaxoHdCcboR5rLJ4TTsunDKjanVdWcmu6syLFiPXRAPq/image.png) 설정은 아래와 같이 해주고 ![](https://cdn.steemitimages.com/DQmXtjCx2ENAuqMGPGQxKiBPc7ciWkKEea3GGGRYLhQW5o3/image.png) Plugins and misc Settings에서 Add버튼을 클릭하여 다운로드받은 파일을 체크합니다. ![](https://cdn.steemitimages.com/DQmV6GcNqKPX3ogPBK1zYPxG1qYAVaRVgt2CHyppbtWazsm/image.png) Apply and close버튼을 눌러 설정을 마칩니다. 소스코드 취약점 점검 결과를 확인하기 위한 뷰(view) 창을 추가해보도록하겠습니다. ![](https://cdn.steemitimages.com/DQmV4thyYdRwAH2VqYiHDkti7dprN4Sx8dWd9wBBK8ipG64/image.png) ![](https://cdn.steemitimages.com/DQmeuJVjPsA5UyUStErrpMQimvwUErUA8UMXFRNRs1rX9st/image.png) 이제 설치가 완료되었고 취약점 점검을 실행해보도록 하겠습니다. ![](https://cdn.steemitimages.com/DQmQDKsEd9pG3MdxkBVJirnxdjik96xQVPrhqGrf45csgF4/image.png) 아래와 같이 취약점들이 우르르 쏟아지는 군요. 우리 불쌍한 web goat!! ![](https://cdn.steemitimages.com/DQmWvKy7RE6W3f7g67FVsxTqupV5DqhzBKVBjyCaAv2NKf9/image.png) 이상 환경세팅은 3개의 포스팅으로 마무리하고 다음 포스팅에서는 실제 공격과 방어를 어떻게 할 수 있는지 실습해보겠습니다~~
json metadata{"tags":["steemit","security","education","kr"],"image":["https://cdn.steemitimages.com/DQmPtbe2piBBevQsPb4s5sQNFHnCVFE7zMpmeGhG1RJo4gz/image.png","https://cdn.steemitimages.com/DQmdwSHbuyD2VESafcMKKRAH1ZTXPuSkn93tft49NWNDeFz/image.png","https://cdn.steemitimages.com/DQmYShuRZ2VPda8rARWVEvzVFcFQagETgi55DeG45yULtZU/image.png","https://cdn.steemitimages.com/DQmWGtFCVd7Cjs3z6bAMUet2ejhBcwvN4QP93ZwWnDvoqap/image.png","https://cdn.steemitimages.com/DQmXTzFQYkHy1myrvTrXzoPQV8fzmrZfHctDcV6By82WABT/image.png","https://cdn.steemitimages.com/DQmTaxoHdCcboR5rLJ4TTsunDKjanVdWcmu6syLFiPXRAPq/image.png","https://cdn.steemitimages.com/DQmXtjCx2ENAuqMGPGQxKiBPc7ciWkKEea3GGGRYLhQW5o3/image.png","https://cdn.steemitimages.com/DQmV6GcNqKPX3ogPBK1zYPxG1qYAVaRVgt2CHyppbtWazsm/image.png","https://cdn.steemitimages.com/DQmV4thyYdRwAH2VqYiHDkti7dprN4Sx8dWd9wBBK8ipG64/image.png","https://cdn.steemitimages.com/DQmeuJVjPsA5UyUStErrpMQimvwUErUA8UMXFRNRs1rX9st/image.png","https://cdn.steemitimages.com/DQmQDKsEd9pG3MdxkBVJirnxdjik96xQVPrhqGrf45csgF4/image.png","https://cdn.steemitimages.com/DQmWvKy7RE6W3f7g67FVsxTqupV5DqhzBKVBjyCaAv2NKf9/image.png"],"links":["https://steemit.com/kr/@ziqon/job-ssul-series-1-ep1","https://steemit.com/steemit/@ziqon/job-ssul-series-1-ep2-victim","https://find-sec-bugs.github.io/"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #24854917/Trx 675ffa7378fb58b0cfdf3c182b289fc92b67ed56
View Raw JSON Data
{
  "trx_id": "675ffa7378fb58b0cfdf3c182b289fc92b67ed56",
  "block": 24854917,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-07T09:15:51",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "steemit",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep3",
      "title": "Job SSul Series 1 : 해킹 방어 실습 - EP3 시큐어코딩 점검 툴 설치",
      "body": "안녕하세요.\nIT+정보보안을 12년간 Job으로하고 있는 저는 어떻게 공격이 들어오고 이걸 어떻게 방어해야 할 것인가에 대하여 Job SSul을 풀어보는 첫 시리즈로 어플리케이션 해킹과 방어가 어떻게 이루어지는지를 주제로 삼았습니다.\n지난 포스트들에 이어 환경구성을 계속 해보겠습니다. - 소스코드 취약점 점검 툴 설치\nhttps://steemit.com/kr/@ziqon/job-ssul-series-1-ep1\nhttps://steemit.com/steemit/@ziqon/job-ssul-series-1-ep2-victim\n\n소스코드 취약점 점검 툴은 아래와 같이 강력한 툴들이 많습니다.\n\n\n여기서 이클립스 플러그인을 통해 쉽게 취약점을 찾을 수 있도록 공개용 툴인 Findbugs security를 설치해보도록 하겠습니다.\n아래와 같이 이클립스 상에서 소프트웨어를 다운로드합니다.\n![](https://cdn.steemitimages.com/DQmPtbe2piBBevQsPb4s5sQNFHnCVFE7zMpmeGhG1RJo4gz/image.png)\n\n![](https://cdn.steemitimages.com/DQmdwSHbuyD2VESafcMKKRAH1ZTXPuSkn93tft49NWNDeFz/image.png)\n\n![](https://cdn.steemitimages.com/DQmYShuRZ2VPda8rARWVEvzVFcFQagETgi55DeG45yULtZU/image.png)\n\n다운로드 받은 소프트웨어가 unsign되었다는 경고팝업이 뜨면 Install Anyway버튼을 클릭합니다.\n![](https://cdn.steemitimages.com/DQmWGtFCVd7Cjs3z6bAMUet2ejhBcwvN4QP93ZwWnDvoqap/image.png)\n\n여기서 취약점 검사 기능을 추가하기 위해서는 아래 사이트로 접속하여 파일을 다운로드 받습니다.\nhttps://find-sec-bugs.github.io/\n![](https://cdn.steemitimages.com/DQmXTzFQYkHy1myrvTrXzoPQV8fzmrZfHctDcV6By82WABT/image.png)\n\n다운로드받은 파일을 import 하기 위해서 아래 메뉴로 들어갑니다.\n![](https://cdn.steemitimages.com/DQmTaxoHdCcboR5rLJ4TTsunDKjanVdWcmu6syLFiPXRAPq/image.png)\n\n설정은 아래와 같이 해주고\n![](https://cdn.steemitimages.com/DQmXtjCx2ENAuqMGPGQxKiBPc7ciWkKEea3GGGRYLhQW5o3/image.png)\n\nPlugins and misc Settings에서 Add버튼을 클릭하여 다운로드받은 파일을 체크합니다.\n![](https://cdn.steemitimages.com/DQmV6GcNqKPX3ogPBK1zYPxG1qYAVaRVgt2CHyppbtWazsm/image.png)\n\nApply and close버튼을 눌러 설정을 마칩니다.\n\n소스코드 취약점 점검 결과를 확인하기 위한 뷰(view) 창을 추가해보도록하겠습니다.\n\n![](https://cdn.steemitimages.com/DQmV4thyYdRwAH2VqYiHDkti7dprN4Sx8dWd9wBBK8ipG64/image.png)\n\n![](https://cdn.steemitimages.com/DQmeuJVjPsA5UyUStErrpMQimvwUErUA8UMXFRNRs1rX9st/image.png)\n\n이제 설치가 완료되었고 취약점 점검을 실행해보도록 하겠습니다.\n\n![](https://cdn.steemitimages.com/DQmQDKsEd9pG3MdxkBVJirnxdjik96xQVPrhqGrf45csgF4/image.png)\n\n아래와 같이 취약점들이 우르르 쏟아지는 군요. 우리 불쌍한 web goat!!\n![](https://cdn.steemitimages.com/DQmWvKy7RE6W3f7g67FVsxTqupV5DqhzBKVBjyCaAv2NKf9/image.png)\n\n이상 환경세팅은 3개의 포스팅으로 마무리하고 다음 포스팅에서는 실제 공격과 방어를 어떻게 할 수 있는지 실습해보겠습니다~~",
      "json_metadata": "{\"tags\":[\"steemit\",\"security\",\"education\",\"kr\"],\"image\":[\"https://cdn.steemitimages.com/DQmPtbe2piBBevQsPb4s5sQNFHnCVFE7zMpmeGhG1RJo4gz/image.png\",\"https://cdn.steemitimages.com/DQmdwSHbuyD2VESafcMKKRAH1ZTXPuSkn93tft49NWNDeFz/image.png\",\"https://cdn.steemitimages.com/DQmYShuRZ2VPda8rARWVEvzVFcFQagETgi55DeG45yULtZU/image.png\",\"https://cdn.steemitimages.com/DQmWGtFCVd7Cjs3z6bAMUet2ejhBcwvN4QP93ZwWnDvoqap/image.png\",\"https://cdn.steemitimages.com/DQmXTzFQYkHy1myrvTrXzoPQV8fzmrZfHctDcV6By82WABT/image.png\",\"https://cdn.steemitimages.com/DQmTaxoHdCcboR5rLJ4TTsunDKjanVdWcmu6syLFiPXRAPq/image.png\",\"https://cdn.steemitimages.com/DQmXtjCx2ENAuqMGPGQxKiBPc7ciWkKEea3GGGRYLhQW5o3/image.png\",\"https://cdn.steemitimages.com/DQmV6GcNqKPX3ogPBK1zYPxG1qYAVaRVgt2CHyppbtWazsm/image.png\",\"https://cdn.steemitimages.com/DQmV4thyYdRwAH2VqYiHDkti7dprN4Sx8dWd9wBBK8ipG64/image.png\",\"https://cdn.steemitimages.com/DQmeuJVjPsA5UyUStErrpMQimvwUErUA8UMXFRNRs1rX9st/image.png\",\"https://cdn.steemitimages.com/DQmQDKsEd9pG3MdxkBVJirnxdjik96xQVPrhqGrf45csgF4/image.png\",\"https://cdn.steemitimages.com/DQmWvKy7RE6W3f7g67FVsxTqupV5DqhzBKVBjyCaAv2NKf9/image.png\"],\"links\":[\"https://steemit.com/kr/@ziqon/job-ssul-series-1-ep1\",\"https://steemit.com/steemit/@ziqon/job-ssul-series-1-ep2-victim\",\"https://find-sec-bugs.github.io/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
2018/08/07 08:44:18
parent authorziqon
parent permlinkjob-ssul-series-1-ep2-victim
authorjyinvest
permlinkre-ziqon-job-ssul-series-1-ep2-victim-20180807t084418429z
title
body유용한 정보 공유 감사합니다. 팔로우할게요 자주소통해요~
json metadata{"tags":["steemit"],"app":"steemit/0.1"}
Transaction InfoBlock #24854287/Trx 5d667c2f1167d66255d02cadb3f59cfea5efd62f
View Raw JSON Data
{
  "trx_id": "5d667c2f1167d66255d02cadb3f59cfea5efd62f",
  "block": 24854287,
  "trx_in_block": 21,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-07T08:44:18",
  "op": [
    "comment",
    {
      "parent_author": "ziqon",
      "parent_permlink": "job-ssul-series-1-ep2-victim",
      "author": "jyinvest",
      "permlink": "re-ziqon-job-ssul-series-1-ep2-victim-20180807t084418429z",
      "title": "",
      "body": "유용한 정보 공유 감사합니다. 팔로우할게요 자주소통해요~",
      "json_metadata": "{\"tags\":[\"steemit\"],\"app\":\"steemit/0.1\"}"
    }
  ]
}
ziqonpublished a new post: job-ssul-series-1-ep2-victim
2018/08/07 08:35:15
parent author
parent permlinksteemit
authorziqon
permlinkjob-ssul-series-1-ep2-victim
titleJob SSul Series 1 : 해킹 방어 실습 - EP2 Victim사이트 만들기
body이전 포스트 (https://steemit.com/kr/@ziqon/job-ssul-series-1-ep1)에서 해킹 및 방어 실습하기 위한 기본설정을 수행했습니다. 이번에는 두번째 단계로 Victim사이트를 구성해보도록 하겠습니다. 1. 먼저 아래 사이트에서 webgoat라는 owasp에서 제공하는 취약한 웹 어플리케이션 파일(webgoat.war)을 다운로드 받습니다. https://code.google.com/archive/p/webgoat/downloads 다운로드 받은 war파일을 이클립스에서 import합니다.([File]-[Import] 메뉴) ![](https://cdn.steemitimages.com/DQmW6ASdaunDH43UEUJ5Revred4y5MAPykqvRY1FBRdNvUj/image.png) ![](https://cdn.steemitimages.com/DQmY53sZrjVfpxUAsQL1ZjsYLSoZPveYeJrwNZG3NnjJw83/image.png) 2. tomcat에 user 추가 ![](https://cdn.steemitimages.com/DQmQn8KL3bhevZn77jUeBRmfxB2HkEP4Ttv922yFYurFG7W/image.png) 3. webgoat 서버 구동 ![](https://cdn.steemitimages.com/DQmSKBEJrG4oNqzbrWj8vByWbeCmvHtHXPLy3nrHJcZCAFY/image.png) ![](https://cdn.steemitimages.com/DQmQjE8yKuXNzobuVW6jdsdZ9cuHdHHR1E8ybuDkY44MMna/image.png) ![](https://cdn.steemitimages.com/DQmTRUdKJ5Qfo8DsSDZAV1WNHpv3CDkzSSmEyihWGF3WEfv/image.png) 앞서 등록한 ID/PW를 입력하고 아래 URL로 접속합니다. ![](https://cdn.steemitimages.com/DQmY5qxwjaVtBGbHXA8dhK2zwTKeSFQo9N5oFum5SjpimoC/image.png) 이것으로 vitim 사이트를 하나 만들었습니다.
json metadata{"tags":["steemit","security","education","kr"],"image":["https://cdn.steemitimages.com/DQmW6ASdaunDH43UEUJ5Revred4y5MAPykqvRY1FBRdNvUj/image.png","https://cdn.steemitimages.com/DQmY53sZrjVfpxUAsQL1ZjsYLSoZPveYeJrwNZG3NnjJw83/image.png","https://cdn.steemitimages.com/DQmQn8KL3bhevZn77jUeBRmfxB2HkEP4Ttv922yFYurFG7W/image.png","https://cdn.steemitimages.com/DQmSKBEJrG4oNqzbrWj8vByWbeCmvHtHXPLy3nrHJcZCAFY/image.png","https://cdn.steemitimages.com/DQmQjE8yKuXNzobuVW6jdsdZ9cuHdHHR1E8ybuDkY44MMna/image.png","https://cdn.steemitimages.com/DQmTRUdKJ5Qfo8DsSDZAV1WNHpv3CDkzSSmEyihWGF3WEfv/image.png","https://cdn.steemitimages.com/DQmY5qxwjaVtBGbHXA8dhK2zwTKeSFQo9N5oFum5SjpimoC/image.png"],"links":["https://steemit.com/kr/@ziqon/job-ssul-series-1-ep1","https://code.google.com/archive/p/webgoat/downloads"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #24854106/Trx 516568237b7b46bfcbcff75a56b437d1035a08dc
View Raw JSON Data
{
  "trx_id": "516568237b7b46bfcbcff75a56b437d1035a08dc",
  "block": 24854106,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-07T08:35:15",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "steemit",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep2-victim",
      "title": "Job SSul Series 1 : 해킹 방어 실습 - EP2 Victim사이트 만들기",
      "body": "이전 포스트 (https://steemit.com/kr/@ziqon/job-ssul-series-1-ep1)에서 해킹 및 방어 실습하기 위한 기본설정을 수행했습니다.\n이번에는 두번째 단계로 Victim사이트를 구성해보도록 하겠습니다.\n1. 먼저 아래 사이트에서 webgoat라는 owasp에서 제공하는 취약한 웹 어플리케이션 파일(webgoat.war)을 다운로드 받습니다.\nhttps://code.google.com/archive/p/webgoat/downloads\n다운로드 받은 war파일을 이클립스에서 import합니다.([File]-[Import] 메뉴)\n![](https://cdn.steemitimages.com/DQmW6ASdaunDH43UEUJ5Revred4y5MAPykqvRY1FBRdNvUj/image.png)\n\n![](https://cdn.steemitimages.com/DQmY53sZrjVfpxUAsQL1ZjsYLSoZPveYeJrwNZG3NnjJw83/image.png)\n\n2. tomcat에 user 추가\n![](https://cdn.steemitimages.com/DQmQn8KL3bhevZn77jUeBRmfxB2HkEP4Ttv922yFYurFG7W/image.png)\n\n3. webgoat 서버 구동\n\n![](https://cdn.steemitimages.com/DQmSKBEJrG4oNqzbrWj8vByWbeCmvHtHXPLy3nrHJcZCAFY/image.png)\n\n![](https://cdn.steemitimages.com/DQmQjE8yKuXNzobuVW6jdsdZ9cuHdHHR1E8ybuDkY44MMna/image.png)\n\n![](https://cdn.steemitimages.com/DQmTRUdKJ5Qfo8DsSDZAV1WNHpv3CDkzSSmEyihWGF3WEfv/image.png)\n\n앞서 등록한 ID/PW를 입력하고 아래 URL로 접속합니다.\n\n![](https://cdn.steemitimages.com/DQmY5qxwjaVtBGbHXA8dhK2zwTKeSFQo9N5oFum5SjpimoC/image.png)\n\n이것으로 vitim 사이트를 하나 만들었습니다.",
      "json_metadata": "{\"tags\":[\"steemit\",\"security\",\"education\",\"kr\"],\"image\":[\"https://cdn.steemitimages.com/DQmW6ASdaunDH43UEUJ5Revred4y5MAPykqvRY1FBRdNvUj/image.png\",\"https://cdn.steemitimages.com/DQmY53sZrjVfpxUAsQL1ZjsYLSoZPveYeJrwNZG3NnjJw83/image.png\",\"https://cdn.steemitimages.com/DQmQn8KL3bhevZn77jUeBRmfxB2HkEP4Ttv922yFYurFG7W/image.png\",\"https://cdn.steemitimages.com/DQmSKBEJrG4oNqzbrWj8vByWbeCmvHtHXPLy3nrHJcZCAFY/image.png\",\"https://cdn.steemitimages.com/DQmQjE8yKuXNzobuVW6jdsdZ9cuHdHHR1E8ybuDkY44MMna/image.png\",\"https://cdn.steemitimages.com/DQmTRUdKJ5Qfo8DsSDZAV1WNHpv3CDkzSSmEyihWGF3WEfv/image.png\",\"https://cdn.steemitimages.com/DQmY5qxwjaVtBGbHXA8dhK2zwTKeSFQo9N5oFum5SjpimoC/image.png\"],\"links\":[\"https://steemit.com/kr/@ziqon/job-ssul-series-1-ep1\",\"https://code.google.com/archive/p/webgoat/downloads\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
2018/07/21 23:14:39
votersteemitboard
authorziqon
permlinkjob-ssul-series-1-ep1
weight100 (1.00%)
Transaction InfoBlock #24382792/Trx e838dd4eb4ab1194f931d97e2edd189299587363
View Raw JSON Data
{
  "trx_id": "e838dd4eb4ab1194f931d97e2edd189299587363",
  "block": 24382792,
  "trx_in_block": 9,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-07-21T23:14:39",
  "op": [
    "vote",
    {
      "voter": "steemitboard",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep1",
      "weight": 100
    }
  ]
}
2018/07/21 23:14:36
parent authorziqon
parent permlinkjob-ssul-series-1-ep1
authorsteemitboard
permlinksteemitboard-notify-ziqon-20180721t231438000z
title
bodyCongratulations @ziqon! You have completed the following achievement on Steemit and have been rewarded with new badge(s) : [![](https://steemitimages.com/70x80/http://steemitboard.com/notifications/posts.png)](http://steemitboard.com/@ziqon) Award for the number of posts published <sub>_Click on the badge to view your Board of Honor._</sub> <sub>_If you no longer want to receive notifications, reply to this comment with the word_ `STOP`</sub> To support your work, I also upvoted your post! **Do not miss the last post from @steemitboard:** [SteemitBoard World Cup Contest - The results, the winners and the prizes](https://steemit.com/steemitboard/@steemitboard/steemitboard-world-cup-contest-the-results-and-prizes) > Do you like [SteemitBoard's project](https://steemit.com/@steemitboard)? Then **[Vote for its witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1)** and **get one more award**!
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
Transaction InfoBlock #24382791/Trx 26d28684664253274b19ff0a75396b884da82e18
View Raw JSON Data
{
  "trx_id": "26d28684664253274b19ff0a75396b884da82e18",
  "block": 24382791,
  "trx_in_block": 21,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-07-21T23:14:36",
  "op": [
    "comment",
    {
      "parent_author": "ziqon",
      "parent_permlink": "job-ssul-series-1-ep1",
      "author": "steemitboard",
      "permlink": "steemitboard-notify-ziqon-20180721t231438000z",
      "title": "",
      "body": "Congratulations @ziqon! You have completed the following achievement on Steemit and have been rewarded with new badge(s) :\n\n[![](https://steemitimages.com/70x80/http://steemitboard.com/notifications/posts.png)](http://steemitboard.com/@ziqon) Award for the number of posts published\n\n<sub>_Click on the badge to view your Board of Honor._</sub>\n<sub>_If you no longer want to receive notifications, reply to this comment with the word_ `STOP`</sub>\n\n\nTo support your work, I also upvoted your post!\n\n\n**Do not miss the last post from @steemitboard:**\n[SteemitBoard World Cup Contest - The results, the winners and the prizes](https://steemit.com/steemitboard/@steemitboard/steemitboard-world-cup-contest-the-results-and-prizes)\n\n> Do you like [SteemitBoard's project](https://steemit.com/@steemitboard)? Then **[Vote for its witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1)** and **get one more award**!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}"
    }
  ]
}
2018/07/21 08:01:06
voterwonsama
authorziqon
permlinkjob-ssul-series-1-ep1
weight100 (1.00%)
Transaction InfoBlock #24364534/Trx c6509bc32ee353815c5859e7bcee3bcac47da1ae
View Raw JSON Data
{
  "trx_id": "c6509bc32ee353815c5859e7bcee3bcac47da1ae",
  "block": 24364534,
  "trx_in_block": 65,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-07-21T08:01:06",
  "op": [
    "vote",
    {
      "voter": "wonsama",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep1",
      "weight": 100
    }
  ]
}
ziqonpublished a new post: job-ssul-series-1-ep1
2018/07/21 08:00:24
parent author
parent permlinkkr
authorziqon
permlinkjob-ssul-series-1-ep1
titleJob SSul Series 1 : 해킹 방어 실습 - EP1 기본 환경 구성
body요새 거래소 해킹 이슈로 암호화폐 투자자들은 많은 손실 받고 있습니다. 거래소의 대응도 대응이지만 일반 투자자들에게도 해킹과 그 대응하는 방법이 무엇일까하는 기본적인 내용들을 알아야합니다. IT+정보보안을 12년간 Job으로하고 있는 저는 어떻게 공격이 들어오고 이걸 어떻게 방어해야 할 것인가에 대하여 Job SSul을 풀어보는 첫 시리즈로 어플리케이션 해킹과 방어가 어떻게 이루어지는지를 주제로 삼았습니다. 주로 실습 위주로 진행하도록 할테니 관심있으신 분들은 맘 편하게 포스팅을 따라오시면 됩니다. 그 첫걸음으로 이번 포스트에서는 시큐어코딩 환경구성을 해보겠습니다. (1) JDK 설치 이건 뭐 구글에서 JDK설치라고 치면 다 나오는 기본적인 내용! 설치가 완료되면 아래와 같이 콘솔에서 버전확인을 합니다. C:\Users\Administrator>java -version java version "1.8.0_60" Java(TM) SE Runtime Environment (build 1.8.0_60-b27) Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode) (2) 톰캣 설치 http://tomcat.apache.org/ 접속 후, Tomcat7을 다운로드 합니다.(본인의 운영체제에 맞는 버전 다운로드) ![](https://cdn.steemitimages.com/DQmZFqgsszTT39mC1MWSHx7cwyXrEYtbWE8RroyPsv1hRmi/image.png) 설치 창에서 안내하는 대로 설치하고 다운로드디렉토리의 apache-tomcat-7.0.90-windows-x64\apache-tomcat-7.0.90\bin 폴더 안에 있는 startup.bat파일을 실행합니다. 그러면 아래와 같은 실행창이 뜨면서 톰캣 서버가 실행됩니다. ![](https://cdn.steemitimages.com/DQmXt6RfGKGQHXE1MhA8ezdsG4sUVdyGWJgvJ4k6HfxiFfE/image.png) 정상적으로 서버가 실행되었는지 확인하기 위해 브라우저에서 http://localhost:8080/ 를 입력하면 아래와 같은 창이 뜹니다. ![](https://cdn.steemitimages.com/DQmNao7c6FyhXHTGskgP8YAoe9yCCFo6MnnKoWNV3mqfc7e/image.png) (3) 이클립스 설치 http://www.eclipse.org/downloads/eclipse-packages/ 위 사이트에 들어가 "Eclipse IDE for Java EE Developers"를 다운로드 받습니다. ![](https://cdn.steemitimages.com/DQmf6Qff3fYyBCW2Pajz42QAP5QJcoTMXxXFk1x4jDiQFzQ/image.png) 다운로드 후 설치 및 실행하면 아래와 같이 이클립스가 뜨게 됩니다. ![](https://cdn.steemitimages.com/DQmUST6exomZfyEsWw2y8CMZ27eTmxPYsjVxCYqHJsLstPP/image.png) 여기서 앞서 설치한 톰캣을 이클립스에 연동하기 위해서는 위 이미지에 빨간 박스로 표시한 Server창에서 Click this link to create a new server를 클립합니다. ![](https://cdn.steemitimages.com/DQmbMYP9N8MhHm1Py3orYxGDe4J2xz6t3PDPYfRPiqEYhdK/image.png) 위와 같은 창이 뜨면 Tomcat 7.0 Server를 선택하고 Next를 클릭하면 아래 창이 뜨는데 앞서 톰캣을 설치한 디렉토리를 지정해주고 Finish버튼을 클릭합니다. ![](https://cdn.steemitimages.com/DQmb2EnheEeXqZm9t3yb6RNLAGFkGAyh1Weg41kf7K1AKWZ/image.png) 톰캣을 실행하기 위해서는 실행 버튼을 클릭합니다. ![](https://cdn.steemitimages.com/DQmRoiYJBbEcrDhxpUnxw9gqTGFRqzUcZteotvC6hGAAsvQ/image.png) 그러면 아래와 같이 서버가 시작된 것을 확인할 수 있습니다. ![](https://cdn.steemitimages.com/DQmcxo8fFHDYZ8mrX8fJwRocQ3t28fFzCxkujaTKA8hQ8dE/image.png) 다음 포스트에서는 희생자가 될 사이트를 구축해보겠습니다.
json metadata{"tags":["kr","education","steemit","science"],"image":["https://cdn.steemitimages.com/DQmZFqgsszTT39mC1MWSHx7cwyXrEYtbWE8RroyPsv1hRmi/image.png","https://cdn.steemitimages.com/DQmXt6RfGKGQHXE1MhA8ezdsG4sUVdyGWJgvJ4k6HfxiFfE/image.png","https://cdn.steemitimages.com/DQmNao7c6FyhXHTGskgP8YAoe9yCCFo6MnnKoWNV3mqfc7e/image.png","https://cdn.steemitimages.com/DQmf6Qff3fYyBCW2Pajz42QAP5QJcoTMXxXFk1x4jDiQFzQ/image.png","https://cdn.steemitimages.com/DQmUST6exomZfyEsWw2y8CMZ27eTmxPYsjVxCYqHJsLstPP/image.png","https://cdn.steemitimages.com/DQmbMYP9N8MhHm1Py3orYxGDe4J2xz6t3PDPYfRPiqEYhdK/image.png","https://cdn.steemitimages.com/DQmb2EnheEeXqZm9t3yb6RNLAGFkGAyh1Weg41kf7K1AKWZ/image.png","https://cdn.steemitimages.com/DQmRoiYJBbEcrDhxpUnxw9gqTGFRqzUcZteotvC6hGAAsvQ/image.png","https://cdn.steemitimages.com/DQmcxo8fFHDYZ8mrX8fJwRocQ3t28fFzCxkujaTKA8hQ8dE/image.png"],"links":["http://tomcat.apache.org/","http://localhost:8080/","http://www.eclipse.org/downloads/eclipse-packages/"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #24364520/Trx a3594189ef9713183ec0ee14783d4658ffae4d6b
View Raw JSON Data
{
  "trx_id": "a3594189ef9713183ec0ee14783d4658ffae4d6b",
  "block": 24364520,
  "trx_in_block": 66,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-07-21T08:00:24",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "kr",
      "author": "ziqon",
      "permlink": "job-ssul-series-1-ep1",
      "title": "Job SSul Series 1 : 해킹 방어 실습 - EP1 기본 환경 구성",
      "body": "요새 거래소 해킹 이슈로 암호화폐 투자자들은 많은 손실 받고 있습니다.\n거래소의 대응도 대응이지만 일반 투자자들에게도 해킹과 그 대응하는 방법이 무엇일까하는 기본적인 내용들을 알아야합니다.\nIT+정보보안을 12년간 Job으로하고 있는 저는 어떻게 공격이 들어오고 이걸 어떻게 방어해야 할 것인가에 대하여 Job SSul을 풀어보는 첫 시리즈로 어플리케이션 해킹과 방어가 어떻게 이루어지는지를 주제로 삼았습니다.\n주로 실습 위주로 진행하도록 할테니 관심있으신 분들은 맘 편하게 포스팅을 따라오시면 됩니다.\n그 첫걸음으로 이번 포스트에서는 시큐어코딩 환경구성을 해보겠습니다.\n\n(1) JDK 설치\n이건 뭐 구글에서 JDK설치라고 치면 다 나오는 기본적인 내용! 설치가 완료되면 아래와 같이 콘솔에서 버전확인을 합니다.\n\nC:\\Users\\Administrator>java -version\n java version \"1.8.0_60\"\nJava(TM) SE Runtime Environment (build 1.8.0_60-b27)\nJava HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)\n\n(2) 톰캣 설치\n http://tomcat.apache.org/ 접속 후, Tomcat7을 다운로드 합니다.(본인의 운영체제에 맞는 버전 다운로드)\n![](https://cdn.steemitimages.com/DQmZFqgsszTT39mC1MWSHx7cwyXrEYtbWE8RroyPsv1hRmi/image.png)\n\n설치 창에서 안내하는 대로 설치하고 다운로드디렉토리의 apache-tomcat-7.0.90-windows-x64\\apache-tomcat-7.0.90\\bin 폴더 안에 있는 startup.bat파일을 실행합니다.\n그러면 아래와 같은 실행창이 뜨면서 톰캣 서버가 실행됩니다.\n![](https://cdn.steemitimages.com/DQmXt6RfGKGQHXE1MhA8ezdsG4sUVdyGWJgvJ4k6HfxiFfE/image.png)\n\n정상적으로 서버가 실행되었는지 확인하기 위해 브라우저에서\nhttp://localhost:8080/ 를 입력하면 아래와 같은 창이 뜹니다.\n![](https://cdn.steemitimages.com/DQmNao7c6FyhXHTGskgP8YAoe9yCCFo6MnnKoWNV3mqfc7e/image.png)\n\n(3) 이클립스 설치\n http://www.eclipse.org/downloads/eclipse-packages/\n 위 사이트에 들어가 \"Eclipse IDE for Java EE Developers\"를 다운로드 받습니다.\n![](https://cdn.steemitimages.com/DQmf6Qff3fYyBCW2Pajz42QAP5QJcoTMXxXFk1x4jDiQFzQ/image.png)\n\n다운로드 후 설치 및 실행하면 아래와 같이 이클립스가 뜨게 됩니다.\n![](https://cdn.steemitimages.com/DQmUST6exomZfyEsWw2y8CMZ27eTmxPYsjVxCYqHJsLstPP/image.png)\n \n여기서 앞서 설치한 톰캣을 이클립스에 연동하기 위해서는 위 이미지에 빨간 박스로 표시한 Server창에서 Click this link to create a new server를 클립합니다.\n![](https://cdn.steemitimages.com/DQmbMYP9N8MhHm1Py3orYxGDe4J2xz6t3PDPYfRPiqEYhdK/image.png)\n위와 같은 창이 뜨면 Tomcat 7.0 Server를 선택하고 Next를 클릭하면 아래 창이 뜨는데 앞서 톰캣을 설치한 디렉토리를 지정해주고 Finish버튼을 클릭합니다.\n![](https://cdn.steemitimages.com/DQmb2EnheEeXqZm9t3yb6RNLAGFkGAyh1Weg41kf7K1AKWZ/image.png)\n\n톰캣을 실행하기 위해서는 실행 버튼을 클릭합니다.\n![](https://cdn.steemitimages.com/DQmRoiYJBbEcrDhxpUnxw9gqTGFRqzUcZteotvC6hGAAsvQ/image.png)\n\n그러면 아래와 같이 서버가 시작된 것을 확인할 수 있습니다.\n![](https://cdn.steemitimages.com/DQmcxo8fFHDYZ8mrX8fJwRocQ3t28fFzCxkujaTKA8hQ8dE/image.png)\n\n다음 포스트에서는 희생자가 될 사이트를 구축해보겠습니다.",
      "json_metadata": "{\"tags\":[\"kr\",\"education\",\"steemit\",\"science\"],\"image\":[\"https://cdn.steemitimages.com/DQmZFqgsszTT39mC1MWSHx7cwyXrEYtbWE8RroyPsv1hRmi/image.png\",\"https://cdn.steemitimages.com/DQmXt6RfGKGQHXE1MhA8ezdsG4sUVdyGWJgvJ4k6HfxiFfE/image.png\",\"https://cdn.steemitimages.com/DQmNao7c6FyhXHTGskgP8YAoe9yCCFo6MnnKoWNV3mqfc7e/image.png\",\"https://cdn.steemitimages.com/DQmf6Qff3fYyBCW2Pajz42QAP5QJcoTMXxXFk1x4jDiQFzQ/image.png\",\"https://cdn.steemitimages.com/DQmUST6exomZfyEsWw2y8CMZ27eTmxPYsjVxCYqHJsLstPP/image.png\",\"https://cdn.steemitimages.com/DQmbMYP9N8MhHm1Py3orYxGDe4J2xz6t3PDPYfRPiqEYhdK/image.png\",\"https://cdn.steemitimages.com/DQmb2EnheEeXqZm9t3yb6RNLAGFkGAyh1Weg41kf7K1AKWZ/image.png\",\"https://cdn.steemitimages.com/DQmRoiYJBbEcrDhxpUnxw9gqTGFRqzUcZteotvC6hGAAsvQ/image.png\",\"https://cdn.steemitimages.com/DQmcxo8fFHDYZ8mrX8fJwRocQ3t28fFzCxkujaTKA8hQ8dE/image.png\"],\"links\":[\"http://tomcat.apache.org/\",\"http://localhost:8080/\",\"http://www.eclipse.org/downloads/eclipse-packages/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
2018/07/03 13:02:24
parent authorziqon
parent permlinkre-yoowonsuk-btc-with-accumulation-schematic-1-wyckoff-events-and-phases-update-20180702t200202502z
authoryoowonsuk
permlinkre-ziqon-re-yoowonsuk-btc-with-accumulation-schematic-1-wyckoff-events-and-phases-update-20180703t130222909z
title
body지금도 돌파가 시급한 구간이라 목표값인 7400$에 도달할 수 있을지는 현재로서는 애매합니다. 6700$ 부근의 강한 매물대 / 일봉상 히든 하락 다이버전스 (6800$ 돌파시 무효) / 라이징 웻지 패턴 6700$ 부근까지 재차 도전할 가능성은 있지만 6800$ 이상으로 돌파되지 않는다면 타켓값에 도달하기 힘들 수도 있습니다.
json metadata{"tags":["coinkorea"],"app":"steemit/0.1"}
Transaction InfoBlock #23852725/Trx 293f102fee51b6bb00c668af7b540d0350df421d
View Raw JSON Data
{
  "trx_id": "293f102fee51b6bb00c668af7b540d0350df421d",
  "block": 23852725,
  "trx_in_block": 29,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-07-03T13:02:24",
  "op": [
    "comment",
    {
      "parent_author": "ziqon",
      "parent_permlink": "re-yoowonsuk-btc-with-accumulation-schematic-1-wyckoff-events-and-phases-update-20180702t200202502z",
      "author": "yoowonsuk",
      "permlink": "re-ziqon-re-yoowonsuk-btc-with-accumulation-schematic-1-wyckoff-events-and-phases-update-20180703t130222909z",
      "title": "",
      "body": "지금도 돌파가 시급한 구간이라 목표값인 7400$에 도달할 수 있을지는 현재로서는 애매합니다.\n\n6700$ 부근의 강한 매물대 / 일봉상 히든 하락 다이버전스 (6800$ 돌파시 무효) / 라이징 웻지 패턴\n\n6700$ 부근까지 재차 도전할 가능성은 있지만 6800$ 이상으로 돌파되지 않는다면 타켓값에 도달하기 힘들 수도 있습니다.",
      "json_metadata": "{\"tags\":[\"coinkorea\"],\"app\":\"steemit/0.1\"}"
    }
  ]
}
2018/07/03 12:57:15
voteryoowonsuk
authorziqon
permlinkre-yoowonsuk-btc-with-accumulation-schematic-1-wyckoff-events-and-phases-update-20180702t200202502z
weight10000 (100.00%)
Transaction InfoBlock #23852628/Trx 57447cd7cc20ecee8a700cf31e966ed072a452a5
View Raw JSON Data
{
  "trx_id": "57447cd7cc20ecee8a700cf31e966ed072a452a5",
  "block": 23852628,
  "trx_in_block": 9,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-07-03T12:57:15",
  "op": [
    "vote",
    {
      "voter": "yoowonsuk",
      "author": "ziqon",
      "permlink": "re-yoowonsuk-btc-with-accumulation-schematic-1-wyckoff-events-and-phases-update-20180702t200202502z",
      "weight": 10000
    }
  ]
}

Account Metadata

POSTING JSON METADATA
profile{"cover_image":"","profile_image":"https://img.esteem.ws/ox1h0u7unh.jpg"}
JSON METADATA
profile{"cover_image":"","profile_image":"https://img.esteem.ws/ox1h0u7unh.jpg"}
{
  "posting_json_metadata": {
    "profile": {
      "cover_image": "",
      "profile_image": "https://img.esteem.ws/ox1h0u7unh.jpg"
    }
  },
  "json_metadata": {
    "profile": {
      "cover_image": "",
      "profile_image": "https://img.esteem.ws/ox1h0u7unh.jpg"
    }
  }
}

Auth Keys

Owner
Single Signature
Public Keys
STM5NVrbGCpfKQyXzLLV28WAsUhvHtxDFvjuh3WdrPRNwcLfys6T61/1
Active
Single Signature
Public Keys
STM5DWAL49kpvDkuALfuLAP4momESMTuxmNXJDQ9WU4R9itEFVZAq1/1
Posting
Single Signature
Public Keys
STM6UpABU1azHUDrcPMwweW6hvgraBWHJ2omDkwueYPsQkHcCBmaD1/1
Memo
STM7XwQfB4Q9HptaUazytRwxibTsJPYnxkQWBQGhLo1FK9WQGnGRw
{
  "owner": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM5NVrbGCpfKQyXzLLV28WAsUhvHtxDFvjuh3WdrPRNwcLfys6T6",
        1
      ]
    ]
  },
  "active": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM5DWAL49kpvDkuALfuLAP4momESMTuxmNXJDQ9WU4R9itEFVZAq",
        1
      ]
    ]
  },
  "posting": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM6UpABU1azHUDrcPMwweW6hvgraBWHJ2omDkwueYPsQkHcCBmaD",
        1
      ]
    ]
  },
  "memo": "STM7XwQfB4Q9HptaUazytRwxibTsJPYnxkQWBQGhLo1FK9WQGnGRw"
}

Witness Votes

0 / 30
No active witness votes.
[]